यह देखते हुए कि आप Mongoose का उपयोग कर रहे हैं, आप 'वर्चुअल' का उपयोग कर सकते हैं, जो अनिवार्य रूप से Mongoose द्वारा बनाए गए नकली फ़ील्ड हैं। वे डीबी में संग्रहीत नहीं हैं, वे बस रन टाइम पर पॉप्युलेट हो जाते हैं:
// Duplicate the ID field.
Schema.virtual('id').get(function(){
return this._id.toHexString();
});
// Ensure virtual fields are serialised.
Schema.set('toJSON', {
virtuals: true
});
इस स्कीमा से आपके द्वारा बनाए गए मॉडल पर किसी भी समय toJSON को कॉल किया जाता है, इसमें एक 'id' फ़ील्ड शामिल होगी जो _id फ़ील्ड Mongo जेनरेट से मेल खाती है। इसी तरह आप उसी तरह toObject के लिए व्यवहार सेट कर सकते हैं।
देखें:
- http://mongoosejs.com/docs/api.html
- http://mongoosejs.com/docs/guide.html#toJSON
- http://mongoosejs.com/docs/guide.html#toObject
आप इसे अपने सभी मॉडलों के बेसशेमा में सारगर्भित कर सकते हैं, फिर तर्क को एक स्थान पर रखने के लिए विस्तार/आह्वान कर सकते हैं। एम्बर/नोड/मोंगोज़ ऐप बनाते समय मैंने उपरोक्त लिखा था, क्योंकि एम्बर वास्तव में काम करने के लिए 'आईडी' फ़ील्ड रखना पसंद करता है।