我为我的项目创建了一个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)
});
});
});
}
如何关闭连接或以其他方式出现问题?
答案 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进程保持运行状态。