Điều đang xảy ra là không có giá trị xác thực, phần mềm trung gian hoặc mặc định nào của Mongoose được sử dụng khi gọi bất kỳ họ phương thức "cập nhật" nào, như findByIdAndUpdate
. Chúng chỉ được gọi bằng các lệnh gọi đến save
hoặc create
.
Lý do cho điều này là các lệnh gọi "cập nhật" là chuyển tiếp hiệu quả đến trình điều khiển gốc, với Mongoose chỉ cung cấp kiểu truyền của các trường dựa trên định nghĩa lược đồ.
Bản cập nhật Mongoose 4.0
Mongoose hiện hỗ trợ đặt giá trị mặc định khi tài liệu mới được tạo trong quá trình cập nhật update
, findOneAndUpdate
hoặc findByIdAndUpdate
nâng cao. Đặt setDefaultsOnInsert
tùy chọn thành true
để kích hoạt điều này. Điều này sử dụng $setOnInsert
toán tử để tạo các giá trị mặc định trên insert.
var queryOptions = {
upsert: true,
setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...