【问题标题】:nodejs mssql return recordsetnodejs mssql 返回记录集
【发布时间】:2015-07-07 02:01:52
【问题描述】:

我试图从 mssql request.query 像返回值一样过去记录集。 遵循https://www.npmjs.com/package/mssql 上的代码很容易制作控制台输出,但是当我尝试将记录集分配给另一个变量时不起作用。我做错了什么?

var sql = require('mssql');
var config = {
    user: 'sa',
    password: 'XXXXXX',
    server: '192.168.8.25',
    database: '3TWIMDB',
}
var resultado='';
sql.connect(config, function(err){
var request = new sql.Request();
  request.query('select 1 as VehiCLASS',function(err,recordset){
    console.log(recordset[0].VehiCLASS);
    resultado = recordset[0].VehiCLASS;
  });
  sql.close();
});
console.log("rsul: "+resultado);

谢谢。

【问题讨论】:

    标签: javascript sql-server node.js node-mssql


    【解决方案1】:

    查询是异步运行的。 console.log 实际上在 resultado = recordset[0].VehiCLASS 完成之前运行,所以它没有设置。

    您必须同步任何依赖异步操作的代码。您必须使用回调来做到这一点:

    resultado = recordset[0].VehiCLASS;
    console.log("rsul: ", resultado);
    

    您也可以指定自己的回调函数来防止嵌套:

    function queryComplete(err, result) {
        // should handle error
    
        console.log("rsul: ", result);
    }
    
    resultado = recordset[0].VehiCLASS;
    queryComplete(null, resultado);
    

    【讨论】:

    • 我不确定如何实现它。自那以后,mssql npm 中的代码也发生了变化。我希望能够将查询结果保存到变量中,但我遇到了同样的问题。请帮忙!
    • 对我来说,最终结果是使用 express 并将 2 个或更多查询保存到变量并执行 "app.get(website,{query1=query1,query2=query2})"
    猜你喜欢
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2015-04-16
    相关资源
    最近更新 更多