我有一個一次性的Node腳本,它對MongoLab上的MongoDB數據庫進行了一些更改。但是,一旦完成,它永遠不會退出事件循環(我總是必須按Ctrl + C),無論調用我做多少db.close()
和db.logout()
。爲什麼我的Node.js腳本中的MongoClient不能完成?
奇怪的是,如果我啓動一個本地運行的實例mongod
並連接到該腳本,那麼腳本結束了,但遠程連接永遠不會結束。
這是我的腳本的簡短版本,仍然存在問題(將URL連接到命令行上的服務器)。這是怎麼回事?
var mongodb = require("mongodb");
function onSuccess(cb){
return function(err) {
if (err) {
console.error(err)
} else {
cb.apply(this,Array.prototype.slice.call(arguments,1))
}
}
}
console.log("Connecting to "+process.argv[2]+' ...');
mongodb.MongoClient.connect(process.argv[2],onSuccess(function(db){
console.log("Connected.");
db.logout(onSuccess(function(logoutResult){
db.close(onSuccess(function(closeResult){
console.log("All finished. Can has prompt return nao?")
}));
}));
}));
我完全按照原樣運行此代碼,並且它自己關閉就好了。 – JohnnyHK
您提供了連接到的服務器嗎?如果遇到錯誤,它將自行關閉,但這是一個錯誤。 –
是的,我運行'node app.js「mongodb:// localhost:27017/test」',它連接到我的本地實例,然後在輸出Connected.'和All'後關閉。可以提示返回nao?' – JohnnyHK