वर्तमान में, केवल ObjectId वे मान जो _id . को संदर्भित करते हैं किसी अन्य संग्रह का उपयोग refs . के रूप में किया जा सकता है ।
यहां एक चर्चा है https://github.com/Automattic/mongoose/issues/2562ए>
हालांकि, यह भविष्य में एक वृद्धि हो सकती है।
दरअसल, इसमें default जोड़ने की जरूरत नहीं है populate करने के लिए मान फ़ील्ड, बस fooAccessType को परिभाषित करें नीचे के रूप में
fooAccessType: {
type: String,
ref: 'AccessType'
},
population के लिए
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(
ObjectID population . में उपयोग किया जाता है , और ObjectId एक 12-बाइट बीएसओएन प्रकार है, जिसका उपयोग करके बनाया गया है:
तो SuperAdmin एक सही नहीं है ObjectID . आप UUID
का उपयोग कर सकते हैं ObjectID . के डिफ़ॉल्ट मान के रूप में
var uuid = require('node-uuid');
// ...
fooAccessType: {
type: String,
default: uuid.v1,
ref: 'AccessType'
},
हालांकि, उपरोक्त कोड अजीब है, fooAccesType AccessType . के संदर्भ में है दस्तावेज़।
field को सहेजने का प्रयास करते समय दस्तावेज़, AccessType पहले सहेजा जाना चाहिए, फिर ObjectID प्राप्त करें इस सहेजे गए AccessType . से और इसे fooAccessType . पर असाइन करें , अंत में, नया field सहेजें दस्तावेज़।
var access = new AccessType({});
access.save(function(err){
if (err)
// error handling
else {
facilityperson.fooAccessType = access._id;
facilityperson.save(function(err) {
});
}
});
population के लिए
FacilityPersonnel.findOne({_id:req.params.id})
.populate('fooAccessType')
.exec(