Konstruktorfunktion in Mongoose-Schemas / -Modellen

9

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

    
LKS 05.03.2013, 02:33
quelle

1 Antwort

3

Mungo unterstützt diese Art von Magie nicht. Aber es gibt ein paar Workarounds, die das Problem lösen könnten.

Definieren Sie eine statische Funktion:

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%

Verwenden Sie die Methode Model.create :

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:

%Vor%

Wenn Sie jedoch ein großes Array haben, erhält der Callback viele Argumente. In diesem Fall könnten Sie versuchen, zu verallgemeinern:

%Vor%

Verwenden Sie Model.collection.insert :

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%     
Rodrigo Medeiros 23.01.2015 12:19
quelle

Tags und Links