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}, ...)