mssql函数不会在节点中停止

时间:2019-08-21 10:27:36

标签: node.js

我为我的项目创建了一个mssql DB查询功能文件,并且以下功能不会停止。

经过几次检查,我可以知道该函数返回了一个有效值,并且程序继续运行。

一段时间后,我了解/认为返回值后sql连接仍然打开。

功能文件:

module.exports.dbquery = function (query){
    var sql = require('mssql')
    var config = {
        user:'user',
        password:'pass',
        server:'hostname',
        database:'DB'
    }
    return new Promise((resolve, reject) =>{
        sql.connect(config, function(err){
            if(err){
                console.log(err)
            }
            var request = sql.Request()
            request.query(query, function(err, recordset){
                if(err){
                    console.log(err)
                }
                table = recordset.recordsets[0]
                resolve(table)
            });
        });
    });
}

如何关闭连接或以其他方式出现问题?

1 个答案:

答案 0 :(得分:0)

如果愿意,可以在查询后关闭连接,我使用的是mssql上的Promisified接口(我认为它更容易阅读!)。

module.exports.dbquery = function (query) {
    var sql = require('mssql')
    var config = {
        user:'user',
        password:'pass',
        server:'hostname',
        database:'DB'
    }

    return sql.connect(config).then(pool => {
        return pool.request().query(query).then(result => {
            pool.close();  // Close pool after query.
            return result;
        });
    });
}

或使用async / await

module.exports.dbquery = async function (query) {
    var sql = require('mssql')
    var config = {
        user:'user',
        password:'pass',
        server:'hostname',
        database:'DB'
    }

    let pool = await sql.connect(config);
    let result = await pool.request().query(query);
    pool.close(); // Close connection.
    return result;
}

这不会使Node.js进程保持运行状态。