Ce qui se passe, c'est qu'aucune des valeurs de validation, de middleware ou par défaut de Mongoose n'est utilisée lors de l'appel de l'une des familles de méthodes "update", comme findByIdAndUpdate
. Ils ne sont invoqués que par des appels à save
ou create
.
La raison en est que les appels de "mise à jour" sont en fait des relais vers le pilote natif, Mongoose ne fournissant que le transtypage des champs en fonction de la définition du schéma.
Mise à jour Mongoose 4.0
Mongoose prend désormais en charge la définition des valeurs par défaut lorsqu'un nouveau document est créé lors d'une update
, findOneAndUpdate
, ou findByIdAndUpdate
upsert. Définissez le setDefaultsOnInsert
option sur true
pour activer cela. Cela utilise le $setOnInsert
opérateur pour créer les valeurs par défaut lors de l'insertion.
var queryOptions = {
upsert: true,
setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...