mongoose erhält den db-Wert im pre-save-Hook

8

Ich möchte wissen, was der 'saubere' Wert einer schmutzigen Requisite in einem Pre-Save Mungo-Haken ist:

%Vor%

Ist es möglich, den alten Wert nachzuschlagen, ohne ihn in der db nachzuschlagen?

    
mkoryak 12.08.2013, 17:12
quelle

2 Antworten

19

Standardmäßig werden die alten Werte nicht gespeichert. Sie müssen die alten Daten mit einem Post-Init-Hook (einer Mungo-Funktion) verfolgen.

Was wir tun, ist eine Kopie des Originaldokuments an alle aus MongoDB gezogenen Objekte anzuhängen. Wir haben diesen Code für jedes Schema, das wir benötigen, um vordirekte Daten für den Vergleich zu erhalten:

%Vor%

NodeJS ist ziemlich effizient und kopiert beim Schreiben, wenn möglich, so dass Sie den doppelten Speicherverbrauch nicht sehen, es sei denn, Sie modifizieren das gesamte Dokument. Nur dann verbraucht _original tatsächlich den doppelten Speicher.

    
Anthony Hildoer 12.08.2013 20:11
quelle
5

Also in einem Pre-Speichern Haken, von dem, was ich sagen kann, indem Sie diesen Abschnitt lesen des Quellcodes glaube ich nicht, dass der vorherige Wert irgendwo gespeichert wird. Also müssen Sie das Dokument von mongodb laden, um es zu bekommen.

Sie können jedoch den virtuals -Mechanismus anstelle eines Vorspeichern-Hooks verwenden, um den alten Wert zu speichern, bevor Sie ihn auf den neuen Wert ändern.

%Vor%

Experimentieren Sie mit etwas in dieser Richtung und schauen Sie, ob Sie etwas angemessen machen können.

    
Peter Lyons 12.08.2013 18:36
quelle

Tags und Links