我正在创建一个帮助我管理数据库的节点服务器。我正在创建数据库中某个队列表中有多少元素的概述,因为我正在使用以下函数:
var getRowCount = function(table) {
var result = 0;
new sql.Request()
.query('SELECT COUNT(*) AS count FROM Queue_' + table)
.then(function(recordset) {
result = recordset[0].count;
})
.catch(err => console.dir(err));
return result;
};
注意:我正在使用ES6但是正在使用Babel进行转换,这就是为什么我没有使用模板文字进行SQL查询。
我的问题是,在将信息发送到我的客户端时(通过socket.io),此函数始终返回0
。如何在返回结果之前等待查询的承诺?
对于我正在使用的SQL node-mssql
答案 0 :(得分:1)
sql查询是一个承诺,所以只需正确处理它:
var getRowCount = function(table) {
return new sql.Request().query('SELECT COUNT(*) AS count FROM Queue_' + table);
};
然后,从外面开始,您可以通过以下方式使用它:
getRowCount(myTable).then(
function (recordset) {
// send result here
},
function (err) {
// send error here
}
);
这是通常在node.js
中使用IO和promises / async代码的做法