Apa yang terjadi adalah tidak ada validasi, middleware, atau nilai default Mongoose yang digunakan saat memanggil salah satu keluarga metode "update", seperti findByIdAndUpdate
. Mereka hanya dipanggil oleh panggilan untuk save
atau create
.
Alasan untuk ini adalah bahwa panggilan "pembaruan" secara efektif diteruskan ke driver asli, dengan Mongoose hanya menyediakan tipe-casting bidang berdasarkan definisi skema.
Pembaruan Mongoose 4.0
Mongoose sekarang mendukung pengaturan default ketika dokumen baru dibuat selama update
, findOneAndUpdate
, atau findByIdAndUpdate
bagian atas. Setel setDefaultsOnInsert
pilihan untuk true
untuk mengaktifkan ini. Ini menggunakan $setOnInsert
operator untuk membuat default pada penyisipan.
var queryOptions = {
upsert: true,
setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...