Ich bin neu in Node.js, mongodb und mongoose. Ich möchte einige Parameter beim Erstellen eines neuen Dokuments übergeben. Dies ist beispielsweise das typische Beispiel für das Erstellen eines neuen Dokuments:
%Vor%Und ich möchte so etwas tun:
%Vor%Ich möchte also einen benutzerdefinierten Konstruktor für ein neues Dokument erstellen. Aber ich weiß nicht, wo und wie ich einen solchen benutzerdefinierten Konstruktor in Mungo setzen kann.
Ich habe einen Stackoverflow-Post mit einem ähnlichen Namen, aber es scheint nicht etwas zu sein, das ich möchte: Benutzerdefinierte Konstruktorfunktion in Mongoose-Schemata / -Modellen
Vielleicht mache ich einen dummen Fehler. Willkommen bei allen Ideen.
Danke
Mungo unterstützt diese Art von Magie nicht. Aber es gibt ein paar Workarounds, die das Problem lösen könnten.
In Ihrer Schemadefinition können Sie eine statische Funktion definieren, die sich mit der Instanziierung aller Modelle auf der Basis der Objekte Ihres Arrays befasst, z. B .:
%Vor% Wenn Sie Ihre Modellinstanzen vor dem Speichern nicht wirklich bearbeiten müssen und nur in die db instanzieren und persistieren möchten, können Sie Model.create
verwenden, das ein Array von Objekten akzeptiert:
Wenn Sie jedoch ein großes Array haben, erhält der Callback viele Argumente. In diesem Fall könnten Sie versuchen, zu verallgemeinern:
%Vor%Wie in der Dokumentation in den Dokumenten erklärt, ist es nur eine abstrakte Methode, die vom Treiber implementiert werden muss. Es hat also keine Mungo-Behandlung und könnte Ihrer Sammlung unerwartete Felder hinzufügen. Zumindest, wenn Sie ein Array von Objekten übergeben, behält es sie bei und gibt ein Array mit der aufgefüllten Methode zurück:
%Vor%