2017-06-07 2 views
0

Ich habe ein Modell, das ich mit dem Pre-Speichern-Hook im Schema ändern. Nach dem Speichern gibt Mungo die geänderten Daten zurück, __v wird aktualisiert und alles sieht gut aus. Aber wenn ich das Modell abzurufen, ist mein Modell nicht verändert ...Ändern in einem Pre-Speichern-Hook nicht persistent

Dies ist eine abgespeckte Version meines Sourcecode:

var schema = new Schema({ 
    name: { 
    type: String, 
    required: true, 
    }, 
    version: { 
    type: Number, 
    required: false, 
    }, 
    versions: { 
    type: Object, 
    required: false, 
    }, 
    elements: { 
    type: Array, 
    required: false, 
    }, 
}) 
    .pre('save', function(next) { 
    version = Object 
     .keys(this.versions) 
     .map(function(key) { return parseInt(key); }) 
     .sort(function(a, b) { return a - b; }) 
     .reverse()[0] + 1; 
    if (isNaN(version)) { 
     version = 1; 
    } 

    this.versions[version] = { 
     createdAt: new Date(), 
     elements: this.elements.slice(), 
    }; 
    this.elements = null; 
    }) 

ich dies tun, weil ich alle Änderungen behalten muß in eine bestimmte Version, so dass Leute bestimmte Versionen der Daten laden können, aber der Client sollte nicht über diese wissen, und einfach eine Versionsnummer und die richtigen Elemente erhalten.

Können Sie mir mit meinem Problem in die richtige Richtung zeigen, oder zeigen Sie mir, was ich falsch mache. Jede Hilfe wird sehr geschätzt.

Antwort

0

Sie müssen die ‚next‘ Funktion am Ende Ihres Rückruf rufen, wenn Sie fertig:

next(); 
Verwandte Themen