Saturday, 15 May 2010

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 6 जवाब

यद्यपि यह पूछा गया है कई बार यह आम तौर पर होता है क्योंकि इकाई के पास फ़ील्ड के लिए कोई मान्य ऑब्जेक्ट नहीं है।

मैं एक ऐसी स्थिति में आया जहां ऑब्जेक्टआईडी एक मान पर सेट किया गया था जिसे ऑब्जेक्टआईडी में डाली जा सकता है लेकिन फिर भी यह त्रुटि मिलती है।

स्कीमा:

  var serviceSchema = paramMongoose.Schema ({serviceName: {type: paramMongoose.Schema.Types.ObjectId, रेफरी: 'सर्वनामनाम', आवश्यक: सत्य}} );  

छद्म कोड:

  serviceFromDB = नई सेवा ({serviceName: 'कुछ नाम'}); serviceFromDB.serviceName = '000000000000000000000001'; ServiceFromDB.save (फ़ंक्शन (paramError, paramData) {if (paramError) {console.log ('लेकिन लेकिन लेकिन ...', serviceFromDB, paramError)}});  

इस कोड का आउटपुट है:

लेकिन लेकिन परन्तु ... {serviceName: 000000000000000000000001, _id: 55079a90286f49280364f78b} {[CastError: वस्तु के लिए कास्ट पथ "सेवानाम" पर "कुछ नाम" के लिए विफल रहा है

ध्यान दें कि serviceName ऑब्जेक्ट आईडी के लिए जाने योग्य है लेकिन मॉन्गोउस के बजाय कन्स्ट्रक्टर को प्रदान किए गए मान का उपयोग करता है उसके बाद वैल्यू सेट होता है।

उसी त्रुटि में परिणाम का उपयोग:

  serviceFromDB.set ('serviceName', '000000000000000000000001');  

यह कोड था जो अद्यतन करता है या कोई इकाई सम्मिलित करता है, इसलिए फ़ील्ड बाद में सेट की गई हैं। कोई तर्क पारित किए बिना एक सेवा उदाहरण बनाना था:

  serviceFromDB = नई सेवा ();  

इसके लिए एक खोला, क्योंकि यह एक दस्तावेज / संस्था का बहुत ही अनियंत्रित व्यवहार है, जो बाद में इसे सेट करने के बाद भी कन्स्ट्रक्टर में मान सेट का उपयोग करता है।

समाधान एक तर्क उदाहरण के बिना एक सेवा उदाहरण बनाना था:

  serviceFromDB = नई सेवा ();  

No comments:

Post a Comment