2017-09-20 4 views
0

J'ai un petit problème avec le hook init avec Mongoose. Lorsque l'utilisateur reçoit les données, je veux le retourner un « formaté » valeurMoongoose pré-crochet

Voici un exemple de mon code:

clientSchema.pre('init', function(next, doc) { 
    doc.prop = 'something'; 
    next(); 
}); 

Il fonctionne très bien, mais quand je regarde dans db, la propriété est modifiée. Cependant, je ne sauvegarde pas les données moi-même ...

Comment est-ce possible?

Merci pour votre aide

Répondre

1

Vous pourriez être la recherche d'un virtuals, qui ne seront pas enregistrées dans votre base de données.

Peut-être quelque chose comme ceci:

clientSchema.virtual('formattedProp').get(function() { 
    var formatted 

    // Use schema properties here to create your formatted value 

    return formatted 
}) 

Vous pouvez alors accéder comme si:

console.log(client.formattedProp) 

Vous pouvez en lire plus ici: http://mongoosejs.com/docs/guide.html#virtuals

Note: vous pouvez également ajoutez ce qui suit à vos options de schéma:

var schema = new Schema(
    { 
    // Schema fields 
    }, 
    { 
    toObject: { 
     virtuals: true 
    }, 
    toJSON: { 
     virtuals: true 
    } 
    } 
)