Étant donné que vous utilisez Mongoose, vous pouvez utiliser des "virtuels", qui sont essentiellement de faux champs créés par Mongoose. Ils ne sont pas stockés dans la base de données, ils sont simplement remplis au moment de l'exécution :
// Duplicate the ID field.
Schema.virtual('id').get(function(){
return this._id.toHexString();
});
// Ensure virtual fields are serialised.
Schema.set('toJSON', {
virtuals: true
});
Chaque fois que toJSON est appelé sur le modèle que vous créez à partir de ce schéma, il inclura un champ 'id' qui correspond au champ _id généré par Mongo. De même, vous pouvez définir le comportement de toObject de la même manière.
Voir :
- http://mongoosejs.com/docs/api.html
- http://mongoosejs.com/docs/guide.html#toJSON
- http://mongoosejs.com/docs/guide.html#toObject
Vous pouvez résumer cela dans un BaseSchema tous vos modèles puis étendre/appeler pour conserver la logique au même endroit. J'ai écrit ce qui précède lors de la création d'une application Ember/Node/Mongoose, car Ember préfère vraiment avoir un champ "id" avec lequel travailler.