Jde o to, že žádná z Mongooseových validačních, middlewarových ani výchozích hodnot není použita při volání jakékoli z "aktualizačních" metod, jako je findByIdAndUpdate
. Jsou vyvolány pouze voláním save
nebo create
.
Důvodem je to, že volání "aktualizace" jsou účinně předávána nativnímu ovladači, přičemž Mongoose poskytuje pouze typové přetypování polí na základě definice schématu.
Aktualizace Mongoose 4.0
Mongoose nyní podporuje nastavení výchozích hodnot při vytvoření nového dokumentu během update
, findOneAndUpdate
nebo findByIdAndUpdate
upsert. Nastavte setDefaultsOnInsert
možnost true
abyste to umožnili. Toto používá $setOnInsert
operátor k vytvoření výchozích hodnot pro insert.
var queryOptions = {
upsert: true,
setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...