MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

नेवला:CastError:कास्ट करने के लिए ObjectId पथ _id . पर मूल्य [वस्तु वस्तु] के लिए विफल

संक्षिप्त उत्तर:mongoose.Types.ObjectId . का उपयोग करें ।

नेवला (लेकिन मोंगो नहीं) ऑब्जेक्ट आईडी को स्ट्रिंग्स के रूप में स्वीकार कर सकता है और उन्हें आपके लिए ठीक से "कास्ट" कर सकता है, इसलिए बस इसका उपयोग करें:

MyClass.findById(req.params.id)

हालांकि, चेतावनी यह है कि यदि req.params.id मोंगो आईडी स्ट्रिंग के लिए मान्य प्रारूप नहीं है, जो एक अपवाद को फेंक देगा जिसे आपको अवश्य पकड़ना चाहिए।

तो समझने वाली मुख्य भ्रमित करने वाली बात यह है कि mongoose.SchemaTypes आपके पास केवल नेवला स्कीमा और mongoose.Types . को परिभाषित करते समय उपयोग की जाने वाली सामग्री है डेटा ऑब्जेक्ट बनाते समय आपके द्वारा उपयोग की जाने वाली सामग्री है जिसे आप डेटाबेस या क्वेरी ऑब्जेक्ट्स में संग्रहीत करना चाहते हैं। तो mongoose.Types.ObjectId("51bb793aca2ab77a3200000d") काम करता है, आपको एक ऑब्जेक्ट देगा जिसे आप डेटाबेस में स्टोर कर सकते हैं या प्रश्नों में उपयोग कर सकते हैं, और एक अमान्य आईडी स्ट्रिंग दिए जाने पर एक अपवाद फेंक देगा।

findOne एक क्वेरी ऑब्जेक्ट लेता है और कॉलबैक में एकल मॉडल इंस्टेंस पास करता है। और findById वस्तुतः findOne({_id: id}) . का एक आवरण है (यहां स्रोत कोड देखें)। बस findOne एक क्वेरी ऑब्जेक्ट लेता है और मेल खाने वाले मॉडल इंस्टेंस की एक सरणी को कॉलबैक में पास करता है।

बस धीमे चलें। यह भ्रमित करने वाला है लेकिन मैं आपको गारंटी दे सकता हूं कि आप भ्रमित हो रहे हैं और इस बिंदु पर नेवले में कीड़े नहीं मार रहे हैं। यह काफी परिपक्व पुस्तकालय है, लेकिन इसे समझने में कुछ समय लगता है।

दूसरी संदिग्ध चीज़ जो मुझे आपके स्निपेट में दिखाई दे रही है, वह new का उपयोग नहीं कर रही है ChildClass . को इंस्टेंट करते समय . इसके अलावा, आपको अपना स्कीमा कोड पोस्ट करना होगा ताकि हम बची हुई किसी भी CastErrors को ट्रैक करने में आपकी सहायता कर सकें।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में योजना और प्रबंधन योजनाएँ (भले ही यह बिना योजना के हो)

  2. MongoDB प्रतिकृति मध्यस्थों के साथ सेट करता है

  3. Cosmos MongoDB एकीकरण के साथ Azure फ़ंक्शन सहेज नहीं रहा है

  4. कैसे गतिशील रूप से नेवला स्कीमा बनाने के लिए?

  5. मुझे यह पदावनत चेतावनी क्यों मिल रही है ?! मोंगोडीबी