Po kilku godzinach spędzonych na próbach ustalenia, gdzie był błąd i dlaczego nie aktualizował bazy danych, dowiedziałem się, że faktycznie zaktualizował bazę danych. Problem polegał na tym, że sprawdzałem aktualizację w powłoce mongo i po zaktualizowaniu jej przez żądanie post nodejs, nie pojawiła się w powłoce jako zaktualizowana. Jednak kiedy ja console.log() etykiety, został on zaktualizowany. Więc zbadałem problem dalej i dowiedziałem się, że problem nie dotyczył powłoki mongo, ale nieprawidłowego użycia aktualizacji polecenia mongoose. Brakowało mi argumentu wywołania zwrotnego. Po dodaniu funkcji zwrotnej dane zostały natychmiast zaktualizowane w powłoce mongo.
Więc zamiast robić:
Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true})
Nie można zapomnieć o dodaniu wywołania zwrotnego:
Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}, function(err, affected) {
if(err)
console.log(err)
else
console.log(affected)
// After successful update, redirect here to another page...
Lub jako zduplikowana odpowiedź sugeruje uruchomienie exec():
Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}).exec()