Để thêm mặc định vào tài liệu của bạn nếu nó được tạo bằng findOneAndUpdate
(nó không tồn tại trước truy vấn) và bạn không cung cấp trường trong bản cập nhật mà bạn nên sử dụng setDefaultsOnInsert
.
Khi upsert
và setDefaultsOnInsert
cả hai true
, các giá trị mặc định sẽ được đặt nếu không tìm thấy bản ghi và một bản ghi mới được tạo. Điều này bỏ qua quy trình làm việc phải kiểm tra xem bản ghi có tồn tại hay không và nếu không, hãy tạo một bản ghi mới với 'save' chỉ để đảm bảo các giá trị mặc định được đặt .
Tôi đã gặp vấn đề tương tự (bản ghi được tạo bằng findOneAndUpdate
với upsert: true
) và giá trị mặc định cho một trường không được thêm vào bản ghi, ngay cả khi nó nằm trong lược đồ. Điều này chỉ liên quan đến việc thêm giá trị mặc định khi sử dụng findOneAndUpdate
để tạo tài liệu, không phải để bỏ qua cập nhật trường 'đã tạo'.
ví dụ:
User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)