如果无法连接到Mongo,我希望我的Node JS应用程序立即退出。我正在使用mongodb
节点库。
我已将代码缩减为
const {MongoClient} = require('mongodb');
MongoClient.connect('mongodb://localhost:27017');
如果Mongo 不正在运行,我会得到UnhandledPromiseRejectionWarning
ECONNREFUSED
,我完全可以预料到,但程序会挂起并且永不退出。这是使用Node版本10.0.0。
由于连接从未成功,我没有要关闭的连接句柄。我已经尝试了各种方法catch
被拒绝的承诺,但我没有成功让程序退出。
在这种情况下,我需要做什么来关闭MongoClient并让程序退出?
答案 0 :(得分:2)
您的应用程序仍处于活动状态,因为它正在尝试reconnect。您可以尝试禁用recconect:
MongoClient.connect('mongodb://localhost:27017', {
autoReconnect: false
}, (err, client) => {
if (client) client.close();
});
或者,您可以使用process.exit(1)
终止该过程以终止该程序。
const {
MongoClient
} = require('mongodb');
// Callback syntax
MongoClient.connect('mongodb://localhost:27017', (err, db) => {
if (err) process.exit(1);
});
// Promise syntax
MongoClient
.connect('mongodb://localhost:27017')
.catch(err => {
process.exit(1);
});
// Async/await syntax
(async function() {
let db;
try {
db = await MongoClient.connect('mongodb://localhost:27017');
} catch (err) {
process.exit(1);
}
}());