节点 JS 多个 Select

Node JS Multiple Select

您好,我正在尝试在节点 js 和 sql 服务器的一个 JS 文件中使用两个 select。我无法弄清楚这个的语法。我需要一个 select 来获取 table 中的所有人,另一个 select 来计算 table.Will 中的总人数,可以将这两个 selects 在单个 JS 文件中。如果可以,有人可以帮我语法吗?

这是我试过的代码,但出现错误 "cant Set headers after they are sent"

var sql = require("mssql"); var dbConfig = {

server: "XXXXX",
database: "XXXXX",
user: "XXXXX",
password: "XXXX",
port: 1433

}; exports.list = 函数(请求,资源){

sql.connect(dbConfig, function (err) {

    if (err) console.log(err);

    var request = new sql.Request();

    request.query('select * from PERSON', function (err, recordset) {

        if (err) 
            console.log(err)
        else
           console.log(recordset)
            res.render('personinfo_itwx', { data: recordset });

    });

        request.query('select count(*) from PERSON', function (err, recordset) {

        if (err) 
            console.log(err)
        else
           console.log(recordset1)
            res.render('personinfo_itwx', { data: recordset1 });

});









});

};

@Aditya 我不确定这是最好的方法,尽管我会简单地提出两个不同的请求,以实现您的需要。正如我在评论中提到的,最简单的方法是使用(例如)async 库。这是您要求的示例。

警告:我没有查看 mysql 文档

const async = require('async')

// {
  async.series([
    function(next)
    {
      new sql.Request()
        .query('SELECT * from PERSON', next(err, resultList))
    },
    function(next)
    {
      new sql.Request()
        .query('SELECT COUNT(*) from PERSON', next(err, count))
    }
  ], (err, result) =>  
  {
    /* 
      err: String
        - if any of the shown above return an error - whole chain will be canceled.

      result: Array
        - if both requests will be succesfull - you'll end up with an array of results 

      --- 

      Now you can render both results to your template at once

    */
  })
// }

当然,如果您想在获得错误或结果后进行操作 - 您总是可以将错误和结果推送到新函数,使用您的数据,然后 return 回调。像这样:

function(next)
{
  new sql.Request()
    .query('SELECT * from PERSON', (err, resultList) =>
    {
      if (err)
      {
        return next(err, null)            
      }

      /*
        data manipulation
      */

      return next(null, resultList)
    })
},