MongoLab の MongoDB データベースにいくつかの変更を加えるワンショット Node スクリプトがあります。db.close()
ただし、終了すると、イベントループを終了することはありません (常に ctrl+C を実行する必要があります) db.logout()
。
奇妙なことに、ローカルで実行中のインスタンスを起動して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?")
}));
}));
}));