2017-06-07 8 views
0

私は、スキーマのpre-saveフックを使用して変更するモデルを持っています。保存すると、mongooseが変更されたデータを返し、__vが更新され、すべてが見た目になります。しかし、私はモデルを取得するとき、私のモデルはまったく変わっていません...pre-saveフックの変更が維持されない

これは私のソースコードのスリムバージョンです:私はすべての変更を維持する必要があるため

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; 
    }) 

私はこれを行います特定のバージョンでは、人々が特定のバージョンのデータを読み込むことができるようになりますが、クライアントはこれらについて知ってはならず、単にバージョン番号と正しい要素を取得する必要があります。

私の問題で正しい方向に向けることができますか、私が間違っていることを教えてください。どんな助けでも大歓迎です。

答えて

0

あなたが行われたときにコールバックの最後に、「次へ」関数を呼び出す必要があります。

next();