Quello che sta succedendo è che nessuno dei valori di convalida, middleware o predefinito di Mongoose viene utilizzato quando si chiama una delle famiglie di metodi "update", come findByIdAndUpdate
. Vengono richiamati solo dalle chiamate per save
o create
.
Il motivo è che le chiamate di "aggiornamento" sono effettivamente pass-through al driver nativo, con Mongoose che fornisce solo il cast del tipo dei campi in base alla definizione dello schema.
Aggiornamento Mangusta 4.0
Mongoose ora supporta l'impostazione dei valori predefiniti quando viene creato un nuovo documento durante un update
, findOneAndUpdate
o findByIdAndUpdate
capovolgere. Imposta il setDefaultsOnInsert
opzione su true
per abilitare questo. Questo utilizza il $setOnInsert
operatore per creare i default all'inserimento.
var queryOptions = {
upsert: true,
setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...