首页 > 解决方案 > 如何连接到数据库并从nodejs中的多个表中获取数据?

问题描述

我创建了一个到数据库的连接,其中有许多与主题相关的表(例如:-subject1、subject2、subject3 ...)。

每个主题表都有两列,它们是“IndexNo, Result”。我想获得与相同索引号相关的结果。从每个表中(一个学生对许多科目的结果)并将其推送到一个数组中。怎么做?

这是我的代码,它返回许多错误。

    const mysql = require('mysql');

    var connect = mysql.createConnection({
    host:'localhost',
    user:'root',
    password:'',
    database:'results_center'
    });

    var studentid = 1234;
    var results = [];
    var i =0;
    for(i=1;i++;i<8){

        var newResult;
        connect.query("select result from subject"+i+" WHERE Index_No = " + studentid,(err,result)=>{
            newResult = result;
        });
            results[i] = result;
    }
      connect.end() 
      console.log(results);

标签: sqlnode.jsasynchronouses6-promise

解决方案


将回调转换为 Promise 并使用 Promise.all 获取所有结果。

const util = require('util');
const query = util.promisify(connect.query);


var i = 0;
var promises = [];
for(i=1;i++;i<8){
    promises.push(query("select result from subject"+i+" WHERE Index_No = " + studentid));
}

Promise.all(promises).then(results => {
  connect.end() 
  console.log(results);
})

推荐阅读