2013-04-13 52 views
8

हाय '_ id' मैं Node.js के नए संस्करण का उपयोग कर के साथ इस मुद्दे हो रहा है के लिए खोज करने के लिए ऑपरेटर 'में' उपयोग नहीं कर सकते इससे पहले मैं इसलेखन त्रुटि: में पुरुष

label(for='user_sex') Sex: 
select(id='user_sex', name='user[sex]') 
    option(id='user_male',value=user.sex,selected=1)='male' 
    option(id='user_female',value=user.sex)='female' 

और कोड की तरह एक कोड का इस्तेमाल किया

500 TypeError: Cannot use 'in' operator to search for '_id' in male 

at model.Document.$__buildDoc (C:\SocialNetwork\node_modules\mongoose\lib\document.js:159:27) 
at model.Document (C:\SocialNetwork\node_modules\mongoose\lib\document.js:58:20) 
at model.Model (C:\SocialNetwork\node_modules\mongoose\lib\model.js:38:12) 
at new model (C:\SocialNetwork\node_modules\mongoose\lib\model.js:2092:11) 
at C:\SocialNetwork\app.js:1033:13 
at callbacks (C:\SocialNetwork\node_modules\express\lib\router\index.js:272:11) 
at param (C:\SocialNetwork\node_modules\express\lib\router\index.js:246:11) 
at param (C:\SocialNetwork\node_modules\express\lib\router\index.js:243:11) 
at pass (C:\SocialNetwork\node_modules\express\lib\router\index.js:253:5) 
at Router._dispatch (C:\SocialNetwork\node_modules\express\lib\router\index.js:280:5) 

समस्या सह के साथ लगता है: app.js

var user = new User(req.body.user); 
-- other code 
var sex = new User(req.body.user.sex); 
User.find({}, function(err, users) { 
for(var i = 0;i< users.length;i++) { 
    if(users[i].email == email) { 
     useremail = users[i].email; 
    } 
} 
if(!useremail) { 
    user.save(function(err) { 
     if (err) return userSaveFailed(); 
     req.flash('info', 'Your account has been created'); 
     emails.sendWelcome(user); 

     switch (req.params.format) { 
     case 'json': 
      res.send(user.toObject()); 
     break; 

     default: 
      req.session.user_id = user.id; 
      res.redirect('/userinfo'); 
     } 
    }); 
} 

में पूरा त्रुटि लॉग इस प्रकार है मुझे पता है कि नॉक-फॉर्म अब बहिष्कृत है, इसलिए अब मैं प्रबल उपयोग कर रहा हूं। क्या कोई मुझे इस त्रुटि को हल करने में मदद कर सकता है

+2

वह हिस्सा जहां आप सभी उपयोगकर्ताओं को पाते हैं और फिर नोड में उनके माध्यम से लूप करता है, सही ईमेल की तलाश में थोड़ा अजीब है। क्यों नहीं 'User.find ({ईमेल: ईमेल}, // ...'? वास्तविक त्रुटि के रूप में मैं नहीं देख सकता कि आप पोस्ट किए गए कोड में इन-ऑपरेटर का उपयोग कर रहे हैं। –

+0

मुझे त्रुटि मिल रही है @ var sex = new user (req.body.user.sex); भले ही मैं शेष कोड का उपयोग न करें, यह मेरे बारे में है। – Inventillect

उत्तर

18

आपको यह त्रुटि मिल रही है क्योंकि आप अपना मॉडल उदाहरण सही तरीके से नहीं बना रहे हैं। यह गुणों का एक हैश और उनके संबंधित मानों की अपेक्षा करता है लेकिन आप जिस पैरामीटर को प्रदान कर रहे हैं वह इसके बजाय एक स्ट्रिंग है। उपरोक्त आपके कोड से, req.body.user एक हैश {sex: "male"} है जबकि req.body.user.sex सिर्फ एक स्ट्रिंग "पुरुष" है। तुम कर सकते हो;

user = new User({sex: "male"}); 

लेकिन आप नहीं कर सकते;

user = new User("male"); 

यही बताता है कि क्यों अपने पहले "उपयोगकर्ता" req.body.user पैरामीटर काम करता है के साथ उदाहरण लेकिन req.body.user.sex पैरामीटर के साथ विफल रहता है। मुझे यकीन नहीं है कि आप var sex = new User(req.body.user.sex); के साथ क्या हासिल करने का प्रयास कर रहे हैं, क्या आप एक और उपयोगकर्ता मॉडल उदाहरण बनाना चाहते हैं? या एक संबद्ध सेक्स मॉडल?

+0

var "sex" एक स्ट्रिंग है जो "मान" चयनित सेक्स का। मैं कोई नया मॉडल नहीं बना रहा हूं। बल्कि मैं फॉर्म से एकत्रित सेक्स का मूल्य वैरिएबल सेक्स में निर्दिष्ट कर रहा हूं जिसे मैं बाद में कोड में उपयोग कर रहा हूं। – Inventillect

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