Mengingat Anda menggunakan Mongoose, Anda dapat menggunakan 'virtual', yang pada dasarnya adalah bidang palsu yang dibuat oleh Mongoose. Mereka tidak disimpan dalam DB, mereka hanya diisi pada saat dijalankan:
// Duplicate the ID field.
Schema.virtual('id').get(function(){
return this._id.toHexString();
});
// Ensure virtual fields are serialised.
Schema.set('toJSON', {
virtuals: true
});
Setiap kali toJSON dipanggil pada Model yang Anda buat dari Skema ini, itu akan menyertakan bidang 'id' yang cocok dengan bidang _id yang dihasilkan Mongo. Demikian juga Anda dapat mengatur perilaku untuk toObject dengan cara yang sama.
Lihat:
- http://mongoosejs.com/docs/api.html
- http://mongoosejs.com/docs/guide.html#toJSON
- http://mongoosejs.com/docs/guide.html#toObject
Anda dapat mengabstraksikan ini menjadi BaseSchema semua model Anda kemudian memperluas/memanggil untuk menjaga logika di satu tempat. Saya menulis di atas saat membuat aplikasi Ember/Node/Mongoose, karena Ember lebih suka memiliki bidang 'id' untuk digunakan.