在返回价值之前等待承诺

时间:2016-04-18 11:45:54

标签: sql-server node.js ecmascript-6

我正在创建一个帮助我管理数据库的节点服务器。我正在创建数据库中某个队列表中有多少元素的概述,因为我正在使用以下函数:

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

1 个答案:

答案 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代码的做法