Vzhledem k tomu, že používáte Mongoose, můžete použít 'virtuály', což jsou v podstatě falešná pole, která Mongoose vytváří. Nejsou uloženy v DB, pouze se zaplní za běhu:
// Duplicate the ID field.
Schema.virtual('id').get(function(){
return this._id.toHexString();
});
// Ensure virtual fields are serialised.
Schema.set('toJSON', {
virtuals: true
});
Kdykoli se na modelu, který vytvoříte z tohoto schématu, zavolá toJSON, bude obsahovat pole 'id', které odpovídá poli _id, které Mongo vygeneruje. Podobně můžete stejným způsobem nastavit chování pro toObject.
Viz:
- http://mongoosejs.com/docs/api.html
- http://mongoosejs.com/docs/guide.html#toJSON
- http://mongoosejs.com/docs/guide.html#toObject
Můžete to abstrahovat do BaseSchema všechny své modely a poté rozšířit/vyvolat, abyste udrželi logiku na jednom místě. Výše jsem napsal při vytváření aplikace Ember/Node/Mongoose, protože Ember opravdu preferuje mít pole 'id' pro práci.