MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose-Upsert erstellt keine standardmäßige Schemaeigenschaft

Was los ist, ist, dass keine der Validierungs-, Middleware- oder Standardwerte von Mongoose verwendet werden, wenn Methoden aus der „Update“-Familie wie findByIdAndUpdate aufgerufen werden . Sie werden nur durch Aufrufe von save aufgerufen oder create .

Der Grund dafür ist, dass die „update“-Aufrufe effektiv Pass-Throughs an den nativen Treiber sind, wobei Mongoose nur die Typumwandlung der Felder basierend auf der Schemadefinition bereitstellt.

Mongoose 4.0-Update

Mongoose unterstützt jetzt das Festlegen von Standardeinstellungen, wenn während eines update ein neues Dokument erstellt wird , findOneAndUpdate , oder findByIdAndUpdate aufregen. Legen Sie setDefaultsOnInsert fest Option auf true um dies zu ermöglichen. Dies verwendet den $setOnInsert Operator zum Erstellen der Standardwerte beim Einfügen.

var queryOptions = {
    upsert: true,
    setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...