Beispieldokumentschema:
%Vor%Ich verwende einen allgemeinen Anforderungshandler zum Bearbeiten und Erstellen von "Firmen" -Dokumenten:
%Vor% Bei Verwendung dieser Methode werden jedoch beim Einfügen eines neuen Dokuments die Eigenschaften created
, modified
nicht mit den Standardwerten Date.now
gespeichert. Jetzt kann ich Company.create
abhängig von der Existenz einer ID aufrufen, aber ich frage mich, warum Upsert keine Standardwerte verwendet, wenn eine Eigenschaft in einem neuen Dokument nicht existiert?
Ich benutze Mungo Version ~ 3.8.10,
Was passiert, ist, dass keine der Validierungs-, Middleware- oder Standardwerte von Mongoose verwendet wird, wenn eine der "update" -Familien von Methoden aufgerufen wird, wie zum Beispiel findByIdAndUpdate
. Sie werden nur durch Aufrufe von save
oder create
aufgerufen.
Der Grund dafür ist, dass die "update" -Aufrufe effektiv Pass-Throughs an den nativen Treiber sind, wobei Mungo nur die Typisierung der Felder basierend auf der Schemadefinition durchführt.
Mongoose 4.0 Update
Mongoose unterstützt jetzt das Setzen von Standardwerten, wenn ein neues Dokument während eines update
, findOneAndUpdate
oder findByIdAndUpdate
upsert erstellt wird. Setzen Sie die Option setDefaultsOnInsert
auf true
, um dies zu aktivieren. Dies verwendet den Operator $setOnInsert
, um die Standardwerte beim Einfügen zu erstellen.