文書の存在を確認し、存在しない場合は挿入する標準的な方法が必要です。これは時間の幕開け以来、私たち全員がやることです。しかし、そこにある例は、半分のルーチンしか示さない。理解できません。だから私は次のコードを思いついた。何らかの理由でif
とelse
が実行されます。関数は2回呼び出されていないので、なぜそれが起こっているのですか?nodejs - IFとELSEの両方を実行する
出力は次のようになります。
Connected correctly to server
got doc
inserted doc
Disconnected from server successfully
コードです:
if (doc != null)
を持つ
// Use connect method to connect to the Server
mongoClient.connect(url, function (err, db) {
assert.equal(null, err);
console.log("Connected correctly to server");
var cursor = db.collection('mycoll').find(mydoc).limit(1);
// i need 'each' in order to test if doc exists.
// will execute once because i said limit 1.
cursor.each(function (err, doc) {
if (doc != null) {
console.log("got doc");
}
else {
mydoc.date_submit = new Date();
db.collection('mycoll').insertOne(mydoc, function (err, r) {
assert.equal(1, r.insertedCount);
console.log("inserted doc");
db.close();
console.log('Disconnected from server successfully');
});
}
});
});
おそらくあなたはカーソルのサイズを記録する必要があります –
カーソルには1の制限がありますので、なぜチェックされていないのですか? – akaphenom
* upsert *操作を探していますか?新しい文書が見つかった場合は、その文書を更新します。 – deceze