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