जब मैं नेस्टेड दस्तावेज़ पर Document.get का उपयोग करता हूं तो यह अपरिभाषित हो जाता है, जहां जब मैं Document.get का उपयोग पूर्ण पथ के साथ करता हूं तो यह काम करता है

उदाहरण:

const PostsSchema = new mongoose.Schema({
    author: {
        name: String
    }
});

const Posts = mongoose.model('posts', PostsSchema);

const doc = new Posts({
    author: {
        name: 'Harry'
    }
});

console.log(doc.get('author.name'));
// "Harry"
console.log(doc.author.get('name'));
// undefined
1
Harry Kruger 25 जिंदा 2021, 23:11

1 उत्तर

सबसे बढ़िया उत्तर

मेरा मानना ​​​​है कि आपके द्वारा प्रस्तुत किए गए दो तरीकों के बीच का अंतर उप-दस्तावेज़ों और नेस्टेड पथों के बीच के अंतर से संबंधित है जैसा कि आधिकारिक दस्तावेज़ में बताया गया है: उपदस्तावेज़ बनाम नेस्टेड पथ

दिए गए उदाहरणों की तुलना में, 'लेखक' 'पोस्ट' का उप-दस्तावेज़ नहीं है, यह स्कीमा में परिभाषित एक संपत्ति है, इसलिए, सही सिंटैक्स, जैसा कि आधिकारिक दस्तावेज़ में प्रस्तुत किया गया है Document.prototype.get(), पथ को एक स्ट्रिंग के रूप में पास करना है (जैसा कि आपने पहले टाइप किया था):

doc.get(path,[type],[options])
  • पथ «स्ट्रिंग»
  • [type] «स्कीमा|स्ट्रिंग|नंबर|बफर|*» वैकल्पिक रूप से ऑन-द-फ्लाई विशेषताओं के लिए एक प्रकार निर्दिष्ट करें
  • [विकल्प] «वस्तु»
  • [options.virtuals=false] «बूलियन» इस पथ को प्राप्त करने से पहले वर्चुअल लागू करें
  • [options.getters=true] «बूलियन» अगर गलत है, तो गेटर्स लगाना छोड़ दें और सिर्फ रॉ वैल्यू पाएं
1
Marcus Castanho 26 जिंदा 2021, 01:01
अगर मैं आपकी बात को समझूं, तो आप नेस्टेड दस्तावेज़ों को सामान्य दस्तावेज़ों के रूप में उपयोग नहीं कर सकते हैं?
 – 
Harry Kruger
26 जिंदा 2021, 12:09
मुझे ऐसा नहीं लगता, क्योंकि अन्य सिंटैक्स (डॉट्स के साथ) दस्तावेज़ों और उप-दस्तावेज़ों को संदर्भित करता है। लेकिन साधारण नेस्टेड गुणों (सही मामलों को देखते हुए) के बजाय उप-दस्तावेजों का उपयोग करने का एक दिलचस्प तरीका यह है कि उप-दस्तावेज़ को इसके _id द्वारा खोजा जाए, क्योंकि यह संपत्ति प्रत्येक दस्तावेज़ के लिए बनाई गई है।
 – 
Marcus Castanho
26 जिंदा 2021, 23:32
यह किन मामलों में उपयोगी होगा?
 – 
Harry Kruger
26 जिंदा 2021, 23:36
ईमानदार होने के लिए मैंने दस्तावेज़ों के बहुत से स्तरों के साथ काम नहीं किया है, लेकिन मुझे लगता है कि यदि आप दस्तावेज़ों के बीच कुछ स्तर के संबंधपरक (यहां तक ​​​​कि मोंगोडीबी नोएसक्यूएल होने के नाते) चाहते हैं तो आप उप-दस्तावेज़ के रूप में एक स्कीमा का उपयोग कर सकते हैं। मैं भी इस दृष्टिकोण के फायदे या नुकसान के बारे में ज्यादा नहीं जानता लेकिन मुझे पता है कि यह संभव है।
 – 
Marcus Castanho
27 जिंदा 2021, 01:56