Sau một vài giờ cố gắng tìm ra lỗi ở đâu và tại sao nó không cập nhật cơ sở dữ liệu, tôi phát hiện ra rằng nó thực sự đã cập nhật cơ sở dữ liệu. Vấn đề là tôi đang kiểm tra bản cập nhật trong mongo shell và sau khi tôi cập nhật nó qua yêu cầu bài đăng của nodejs, nó không xuất hiện trong shell như đã cập nhật. Tuy nhiên, khi tôi console.log () các nhãn, nó đã được cập nhật. Vì vậy, tôi đã điều tra thêm vấn đề và phát hiện ra rằng vấn đề không phải là trình bao mongo mà là do việc sử dụng không chính xác bản cập nhật lệnh mongoose. Tôi đã thiếu đối số gọi lại. Sau khi thêm chức năng gọi lại, dữ liệu được cập nhật trong mongo shell ngay lập tức.
Vì vậy, thay vì làm:
Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true})
Không được quên thêm callback:
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...
Hoặc như câu trả lời trùng lặp gợi ý nên chạy execute ():
Label.update({'_id': { $in: post.labelIds }}, {$addToSet: {postIds:req.body.id}}, {multi: true}).exec()