2012-05-19 11 views
12

यहाँ उदाहरणमैं मोंगोडीबी में टाइपिंग कैसे कर सकता हूं?

http://mongoosejs.com/docs/populate.html

निम्नलिखित कोड

var story1 = new Story({ 
     title: "A man who cooked Nintendo" 
    , _creator: aaron._id 
    }); 

_creator रूप

_creator : { type: Schema.ObjectId, ref: 'Person' } 

इस प्रकार है कि ऊपर बताया गया है, तो मैं निम्नलिखित

var story1 = new Story({ 
     title: "A man who cooked Nintendo" 
    , _creator: {name: 'test'} 
    }); 
लिए कोड को संशोधित प्रदान करता है

यह खुशी से मोंगोडीबी में डेटा डालने लगता है।

{ "title" : "A man who cooked Nintendo", "_creator" : { "name" : "test" }, "_id" : ObjectId("4fb7a55315c5f2de07000002"), "fans" : [ ] } 

सम्मिलन से पहले मैं त्रुटि को कैसे पकड़ूं? मैं यह जांचना चाहता हूं कि यह केवल एक ऑब्जेक्ट आईडी नहीं है बल्कि यह भी एक वैध व्यक्ति के अनुरूप है।

उत्तर

20

जारी रखने के लिए क्या प्रस्तावित @JohnnyHK, यहाँ एक पूर्ण समाधान है (यह मानते हुए _creator एक अंकीय आईडी के लिए एक संदर्भ है)।

आप अगर मान एक मान्य ObjectId

function isObjectId(n) { 
    return mongoose.Types.ObjectId.isValid(n); 
} 

सत्यापित है जाँच करना चाहते हैं: [सत्यापनकर्ता, 'मेरे त्रुटि प्रकार']

_creator : { type: Schema.ObjectId, ref: 'Person', validate: isObjectId } 
+3

यह 'TypeError: ऑब्जेक्ट फ़ंक्शन ऑब्जेक्ट आईडी (कुंजी, विकल्प) {SchemaType.call (यह, कुंजी, विकल्प, 'ऑब्जेक्ट आईडी') प्रदान करता है; } कोई विधि 'isValid'' – Tom

+6

है मेरा मानना ​​है कि वे करने के लिए इसे बदल दिया है: 'mongoose.Types.ObjectId.isValid()' – herbyme

+0

अपडेट किया गया है, धन्यवाद @herbyme –

1

आप here वर्णित स्कीमा के _creator फ़ील्ड में सत्यापन जोड़ सकते हैं।

_creator : { type: Schema.ObjectId, ref: 'Person', validate: ... } 
6

विधि अगर है मौजूद नहीं है (अब?), आपकी सर्वश्रेष्ठ शर्त एक साधारण नियमित अभिव्यक्ति है, जैसा कि here

+4

मेरा मानना ​​है कि वे करने के लिए इसे बदल दिया है: 'mongoose.Types.ObjectId.isValid()' – herbyme

संबंधित मुद्दे

 संबंधित मुद्दे