O que está acontecendo é que nenhum dos valores de validação, middleware ou padrão do Mongoose são usados ao chamar qualquer uma das famílias de métodos "update", como
findByIdAndUpdate
. Eles são invocados apenas por chamadas para save
ou create
. A razão para isso é que as chamadas de "atualização" são efetivamente passadas para o driver nativo, com o Mongoose fornecendo apenas conversão de tipo dos campos com base na definição do esquema.
Atualização do Mongoose 4.0
O Mongoose agora suporta a configuração de padrões quando um novo documento é criado durante uma
update
, findOneAndUpdate
, ou findByIdAndUpdate
upsert. Defina o setDefaultsOnInsert
opção para true
para habilitar isso. Isso usa o $setOnInsert
operador para criar os padrões na inserção. var queryOptions = {
upsert: true,
setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...