0
Ich habe eine einfache for-Schleife, die nur einen Wert im Schema inkrementiert. Ich rufe einfach findOne
mit einem Dokument _id
. Aktualisieren Sie die Eigenschaft des Docs und rufen Sie .save
. Aber ich bemerkte es nie erhöht, es geht einfach zurück auf 0 und so der Wert geht nie über 1.Mongoose .save wird wieder auf den ursprünglichen Wert zurückgesetzt
Suche/Update-Code
try {
for(let i = 0; i < 6; i++) {
const find = async() => {
const found = await JobStatus.findOne({_id: mongoose.Types.ObjectId(data._id)})
.exec().then(function(doc) {
console.log("Before "+i+" : " +doc.number_of_items_processed)
doc.number_of_items_processed += 1
doc.save();
console.log("After "+i+" : " +doc.number_of_items_processed)
})
}
find()
}//for(....)
} catch (err) {
console.log(err)
}
Dies ist die Ausgabe der Konsole:
Before 0 : 0
After 0 : 1
Before 2 : 0
After 2 : 1
Before 1 : 0
After 1 : 1
Before 3 : 0
After 3 : 1
Before 5 : 0
After 5 : 1
Before 4 : 0
After 4 : 1
db.jobstatuses.find().pretty()
{
"_id" : ObjectId("5a3c981cbd8f4128c48d8207"),
"number_of_items_submitted" : 5059,
"number_of_items_processed" : 1,//STARTS OUT WITH 0
"time_completed" : null,
"job_outcome" : "Submitted",
"job_errors" : null,
"time_submitted" : ISODate("2017-12-22T05:29:00.530Z"),
"__v" : 0
}
Danke. Diese Arbeit, aber ich frage mich nur, was ist los mit meinem Ansatz. –
Async-Problem haben in Ihrem Ansatz –
Entschuldigung, ich bin beschäftigt .. ich werde meinen Code korrigieren und finden, was Problem in Ihrem Ansatz ist. –