私はmongoDBを新しくしてNode.jsを経験していないので、以下のコードが完璧ではない場合はご容赦ください。node.jsからmongodbコレクションから文書を取り除く
目的は、_id
によって参照されるコレクションからドキュメントを削除することです。削除は(mongoシェルでチェックされて)行われますが、コードは終了しません(node myscript.js
を実行してもシェルが元に戻りません)。 db.close()
を追加すると{ [MongoError: Connection Closed By Application] name: 'MongoError' }
と表示されます。
var MongoClient = require("mongodb").MongoClient;
var ObjectID = require("mongodb").ObjectID;
MongoClient.connect('mongodb://localhost/mochatests', function(err, db) {
if (err) {
console.log("error connecting");
throw err;
}
db.collection('contacts', {}, function(err, contacts) {
if (err) {
console.log("error getting collection");
throw err;
}
contacts.remove({_id: ObjectID("52b2f757b8116e1df2eb46ac")}, {safe: true}, function(err, result) {
if (err) {
console.log(err);
throw err;
}
console.log(result);
});
});
db.close();
});
接続を閉じる必要はありませんか?私はそれを閉じていないと、プログラムが終了しないときに何が起こっているのですか?
ありがとうございます!非同期スタイルに
何も起こりません、あなたのプログラムは、ちょうどモンゴドライバからいくつかのI/Oを待っています。もちろん、あなたは何も届かず、何も送ってこないことを知っていますが、ノードはこれを知らず、それで終了できません。 – kamituel