我正在运行一个相当简单的nodejs程序,该程序从mssql数据库中取出一些行,对它们执行某些操作,然后退出。
相反,它会按预期执行,但随后会一直运行。
我忘记了让程序完成的任何事情吗?
或者仅仅是因为我希望程序在所有承诺都已完成时退出是错误的,我需要手动终止它吗?
'use strict';
var mssql = require('mssql');
var myssqlConfig = {
user: '...',
password: '...',
server: '...',
port: 1435,
database: '...'
};
mssql.connect(myssqlConfig).then(function() {
new mssql.Request()
.input('someRow', mssql.VarChar(), 'someValue')
.query("SELECT * FROM tableName WHERE someColumn > @someValue")
.then(function(recordset){
// do non-relevant stuff with the record set.
})
.catch(function(err){
console.log('Error: '+err);
});
}).catch(function(err) {
console.log('Connection Error: '+err);
});
答案 0 :(得分:3)
如果您希望退出流程,则必须致电process.exit()
。您可以向它发送退出状态0或1,以指示它是干净还是错误状态。这将导致它立即退出。
如果你希望它在完成当前工作后退出(即待处理的异步任务),你设置process.exitCode = 0
或者如果它出错,则设置为1,这是一个更优雅的退出。
要使后者工作,您实际上也需要断开与DB的连接,因为打开的连接将被视为待处理的工作。