Do dodawania wartości domyślnych do dokumentu, jeśli został utworzony za pomocą findOneAndUpdate
(nie istniało przed zapytaniem) i nie podałeś pola w aktualizacji, użyj setDefaultsOnInsert
.
Kiedy upsert
i setDefaultsOnInsert
oba są true
, wartości domyślne zostaną ustawione, jeśli rekord nie zostanie znaleziony i zostanie utworzony nowy. Pomija to przepływ pracy polegający na sprawdzaniu, czy rekord istnieje, a jeśli nie, tworzenie nowego za pomocą „zapisz” tylko po to, aby upewnić się, że ustawione są wartości domyślne .
Miałem ten sam problem (rekord utworzony za pomocą findOneAndUpdate
z upsert: true
) i wartość domyślna pola nie została dodana do rekordu, mimo że znajdowała się w schemacie. Dotyczy to tylko dodawania wartości domyślnych przy użyciu findOneAndUpdate
do tworzenia dokumentów, a nie do pomijania aktualizacji pola „utworzono”.
np.
User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)