Per aggiungere valori predefiniti al tuo documento se è stato creato con findOneAndUpdate
(non esisteva prima della query) e non hai fornito il campo nell'aggiornamento dovresti usare setDefaultsOnInsert
.
Quando upsert
e setDefaultsOnInsert
sono entrambi true
, le impostazioni predefinite verranno impostate se il record non viene trovato e ne viene creato uno nuovo. Questo salta il flusso di lavoro di dover controllare se il record esiste e, in caso contrario, crearne uno nuovo con 'salva' solo per assicurarsi che i valori predefiniti siano impostati .
Ho riscontrato lo stesso problema (record creato con findOneAndUpdate
con upsert: true
) e il valore predefinito per un campo non è stato aggiunto al record, anche se era nello schema. Ciò riguarda solo l'aggiunta di valori predefiniti quando si utilizza findOneAndUpdate
per creare documenti, non per saltare l'aggiornamento del campo 'creato'.
es.
User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)