Pro přidání výchozích hodnot do dokumentu, pokud byl vytvořen pomocí findOneAndUpdate
(před dotazem neexistovalo) a v aktualizaci jste nezadali pole, měli byste použít setDefaultsOnInsert
.
Když upsert
a setDefaultsOnInsert
jsou obě true
, výchozí hodnoty budou nastaveny, pokud záznam nebude nalezen a bude vytvořen nový. Tím se vynechá pracovní postup, kdy je nutné zkontrolovat, zda záznam existuje, a pokud ne, vytvořit nový pomocí „uložit“, abyste se ujistili, že jsou nastaveny výchozí hodnoty. .
Měl jsem stejný problém (záznam vytvořený pomocí findOneAndUpdate
s upsert: true
) a výchozí hodnota pro pole nebyla přidána do záznamu, i když byla ve schématu. Týká se to pouze přidávání výchozích hodnot při použití findOneAndUpdate
k vytváření dokumentů, nikoli k přeskočení aktualizace pole 'vytvořeno'.
např.
User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)