Kürzlich auf Mungo 4.0.2 aktualisiert. Der folgende Code funktionierte zuvor, führt aber jetzt dazu, dass das Dokument erstellt, aber nicht an den Rückruf übergeben wird:
Milestone.findOneAndUpdate({
......
}, {
......
}, {upsert: true}, function(err, res) {
// err === null
// res === null
done(err, res);
});
Dies geschieht nur beim Upsert . Ich kann überprüfen, ob das Dokument erstellt wurde, aber sowohl err als auch res sind durchweg null. Wenn ich die Funktion erneut aufrufe (da das Dokument jetzt existiert), funktioniert sie wie erwartet.
Mungo: 4.0.2
Knoten: v0.12.2
Mongodb: 2.6.9
Verwenden Sie die Option new: true
, siehe Versionshinweise 4.0 zu #2262.
Milestone.findOneAndUpdate({
......
}, {
......
}, {upsert: true, 'new': true}, function(err, res) {
// err === null
// res === null
done(err, res);
});
Vielen Dank! Warum wird das Dokument trotzdem erstellt, wenn ich new: true
weglasse?
new
ist standardmäßig false, und wenn new
false ist, gibt MongoDB das Dokument so zurück, wie es vor der Aktualisierungsoperation war. Bei Upserts gab es kein Dokument, also null.
Ah ich verstehe, danke!
Hilfreichster Kommentar
Verwenden Sie die Option
new: true
, siehe Versionshinweise 4.0 zu #2262.