我创建了一个查询Microsoft SQL Server的Node API。我正在将节点10.13.0与MSSQL 5.1.0一起使用。我已经制作了一个模块,可以轻松执行查询。
module.exports = async function executeQuery(query, params) {
return new Promise((resolve, reject) => {
new sql.ConnectionPool(config).connect().then(pool => {
let request = pool.request();
if (typeof params != "undefined") {
Object.keys(params).forEach(function(key) {
request.input(key, params[key]);
});
}
return request.query(query);
}).then(result => {
sql.close();
resolve(result.recordset);
}).catch(err => {
reject(err);
sql.close();
});
});
};
我发现我发生了内存泄漏,因为当人们使用Node API时,内存一直在增加。我用--inspect
用DevTools做了一些堆快照。我认为这与查询Microsoft SQL Server的MSSQL模块有关。我对Chrome中的Node DevTools不太了解,但是我可以看到(关闭)中有很多()
。它们都包含相同的对象,并且在其中包含对我的变量pool in ConnectionPool
的引用。
我错过了什么吗?我会严重关闭连接吗?谢谢您的帮助。