Untuk menambahkan default ke dokumen Anda jika dibuat dengan findOneAndUpdate
(tidak ada sebelum kueri) dan Anda tidak menyediakan bidang dalam pembaruan, Anda harus menggunakan setDefaultsOnInsert
.
Saat upsert
dan setDefaultsOnInsert
keduanya true
, default akan ditetapkan jika catatan tidak ditemukan dan yang baru dibuat. Ini melewatkan alur kerja karena harus memeriksa apakah catatan ada dan jika tidak, buat yang baru dengan 'simpan' hanya untuk memastikan default disetel .
Saya memiliki masalah yang sama (rekaman dibuat dengan findOneAndUpdate
dengan upsert: true
) dan nilai default untuk bidang tidak ditambahkan ke catatan, meskipun ada dalam skema. Ini hanya terkait dengan menambahkan default saat menggunakan findOneAndUpdate
untuk membuat dokumen, bukan untuk melewatkan pembaruan bidang 'dibuat'.
misalnya
User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)