Para adicionar padrões ao seu documento se ele foi criado com
findOneAndUpdate
(não existia antes da consulta) e você não forneceu o campo na atualização, você deve usar setDefaultsOnInsert
. Quando
upsert
e setDefaultsOnInsert
ambos são true
, os padrões serão definidos se o registro não for encontrado e um novo for criado. Isso ignora o fluxo de trabalho de ter que verificar se o registro existe e, caso contrário, criar um novo com 'salvar' apenas para garantir que os padrões estejam definidos . Eu tive o mesmo problema (registro criado com
findOneAndUpdate
com upsert: true
) e o valor padrão de um campo não foi adicionado ao registro, mesmo que estivesse no esquema. Isso é apenas em relação à adição de padrões ao usar findOneAndUpdate
para criar documentos, não para pular a atualização do campo 'criado'. por exemplo.
User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)