节点JS多选

时间:2017-02-22 23:06:18

标签: javascript sql-server node.js multiple-select multiple-select-query

您好我正在尝试在节点js和sql server中的一个JS文件中使用两个选择。我无法弄清楚这个的语法。我需要一个select来从表中获取所有人,另一个选择来计算该表中的总人数。是否可以将这两个选项放在一个JS文件中。如果是这样,有人可以帮我解释语法吗?

这是我试过的代码,我收到错误 "无法在发送标题后设置标题"

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

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

}; exports.list = function(req,res){

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 });

});









});

};

1 个答案:

答案 0 :(得分:0)

@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

    */
  })
// }

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

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

      /*
        data manipulation
      */

      return next(null, resultList)
    })
},