Med tanke på att du använder Mongoose kan du använda "virtualer", som i huvudsak är falska fält som Mongoose skapar. De lagras inte i databasen, de fylls bara i vid körning:
// Duplicate the ID field.
Schema.virtual('id').get(function(){
return this._id.toHexString();
});
// Ensure virtual fields are serialised.
Schema.set('toJSON', {
virtuals: true
});
Varje gång toJSON anropas på modellen du skapar från detta schema, kommer det att inkludera ett 'id'-fält som matchar _id-fältet som Mongo genererar. På samma sätt kan du ställa in beteendet för toObject på samma sätt.
Se:
- http://mongoosejs.com/docs/api.html
- http://mongoosejs.com/docs/guide.html#toJSON
- http://mongoosejs.com/docs/guide.html#toObject
Du kan abstrahera detta till ett BaseSchema alla dina modeller och sedan utöka/anropa för att hålla logiken på ett ställe. Jag skrev ovanstående när jag skapade en Ember/Node/Mongoose-app, eftersom Ember verkligen föredrar att ha ett "id"-fält att arbeta med.