आपके द्वारा संदर्भित नेवला डॉक्स का उदाहरण Number
. का उपयोग करता है personSchema._id
. के लिए फ़ील्ड, और ObjectId
दूसरों के लिए।
मुझे लगता है कि वे इसे उदाहरण में केवल यह दिखाने के लिए करते हैं कि इसका उपयोग करना संभव है। यदि आप _id
निर्दिष्ट नहीं करते हैं स्कीमा में, ObjectId
डिफ़ॉल्ट होगा।
यहां, आपके सभी रिकॉर्ड में एक _id
है फ़ील्ड जो एक ObjectId
है , फिर भी आप उनके साथ संख्याओं की तरह व्यवहार कर रहे हैं। इसके अलावा, personID
. जैसे फ़ील्ड और taskID
मौजूद नहीं है, जब तक कि आप उस हिस्से को नहीं छोड़ते जहां आप उन्हें परिभाषित करते हैं।
यदि आप अपने सभी _id
. के लिए संख्याओं का उपयोग करना चाहते हैं फ़ील्ड, आपको इसे स्कीमा में परिभाषित करना होगा।
var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
फिर एक विशेष आईडी के साथ एक समाचार आइटम बनाने के लिए, और इसे एक निर्माता को असाइन करें:
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
हालाँकि यहाँ ध्यान देने वाली बात यह है कि जब आप ObjectId
. के अलावा किसी और चीज़ का उपयोग करते हैं _id
. के रूप में क्षेत्र, आप स्वयं इन मूल्यों के प्रबंधन की जिम्मेदारी ले रहे हैं। ObjectIds स्वतः उत्पन्न होते हैं और उन्हें किसी अतिरिक्त प्रबंधन की आवश्यकता नहीं होती है।
संपादित करें:मैंने यह भी देखा है कि आप अपने संघों के दोनों किनारों पर रेफरी जमा कर रहे हैं। यह पूरी तरह से मान्य है और आप इसे कभी-कभी करना चाह सकते हैं, लेकिन ध्यान दें कि आपको संदर्भों को pre
में स्वयं संग्रहीत करने का ध्यान रखना होगा हुक।