За добавяне на настройки по подразбиране към вашия документ, ако е създаден с findOneAndUpdate
(не съществуваше преди заявката) и не предоставихте полето в актуализацията, трябва да използвате setDefaultsOnInsert
.
Когато upsert
и setDefaultsOnInsert
и двете са true
, стойностите по подразбиране ще бъдат зададени, ако записът не бъде намерен и се създаде нов. Това пропуска работния процес на проверка дали записът съществува и ако не, тогава създаване на нов със „запазване“, само за да сте сигурни, че са зададени настройките по подразбиране .
Имах същия проблем (запис, създаден с findOneAndUpdate
с upsert: true
) и стойността по подразбиране за поле не беше добавена към записа, въпреки че беше в схемата. Това се отнася само за добавяне на стойности по подразбиране при използване на findOneAndUpdate
за създаване на документи, а не за пропускане на актуализацията на полето „създадено“.
напр.
User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)