Helpex - Trao đổi & giúp đỡ Đăng nhập
4

Trong mongoose, chúng tôi có thể kiểm tra xem thao tác cập nhật đã sửa đổi tài liệu hay chưa bằng model.update():

model.update(query, update, function(err, raw){
    if (raw.nModified >= 1) console.log('document is modified!')
});

Có cách nào để làm điều tương tự với model.findOneAndUpdate()?

model.findOneAndUpdate(query, update, { new: true }, function(err, doc){
    if (doc) {
        // So MongoDB found the document, but is there a way 
        // to know the document was indeed modified?
    }
});
4 hữu ích 3 bình luận 4.3k xem chia sẻ
2

Bạn có thể chuyển tùy chọn { passRawResult : true }cho mongoose để khuyên mongoose chuyển kết quả thô của trình điều khiển mongodb bên dưới, trong trường hợp này là mongodb-native, như một đối số thứ ba cho lệnh gọi lại.

tài liệu mongodb-native cho findOneAndUpdate

model.findOneAndUpdate(query, update, { new: true, passRawResult : true }, function(err, doc, res){
    // res will look like
    // { value: { _id: 56a9fc80a7f9a4d41c344852, name: 'hugo updated', __v: 0 },
    //   lastErrorObject: { updatedExisting: true, n: 1 },
    //   ok: 1 }
});

Trong trường hợp cập nhật không thành công do không tìm thấy tài liệu phù hợp, nullres sẽ được chuyển cho lệnh gọi lại. Trong trường hợp tài liệu được khớp nhưng giá trị trường giống như trước khi cập nhật đối tượng res sẽ không cung cấp cho bạn đủ thông tin để tìm ra liệu các giá trị có được cập nhật cho tài liệu khớp hay không.

2 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ node.js mongodb mongoose database , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading