2017-06-07 2 views
0

J'ai un modèle que je modifie en utilisant le crochet de pré-sauvegarde dans le schéma. Une fois sauvé, mongoose retourne les données modifiées, __v est mis à jour et tout semble dandy. Mais lorsque je récupère le modèle, mon modèle ne change pas du tout ...Modification dans un hook de pré-sauvegarde non persistant

Ceci est une version allégée de mon code source:

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

Je le fais parce que je dois garder tous les changements dans une version spécifique, de sorte que les utilisateurs puissent charger des versions spécifiques des données, mais le client ne devrait pas en être informé, et obtenir simplement un numéro de version et les éléments corrects.

Pourriez-vous me diriger dans la bonne direction avec mon problème, ou me montrer ce que je fais mal. Toute aide est grandement appréciée.

Répondre

0

Vous devez appeler la fonction « suivante » à la fin de votre rappel lorsque vous avez terminé:

next();