MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

L'upsert di Mongoose non crea la proprietà dello schema predefinita

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( ...