2012-10-13 24 views
5

की संपत्ति '' नहीं पढ़ सकती है मुझे एक प्रश्न है, और जब कभी मैं सत्यापित करता हूं कि यह एक खाली दस्तावेज़ लौटाता है तो मुझे एक त्रुटि फेंक दी जाती है कि 'संपत्ति' उपयोगकर्ता नाम नहीं पढ़ा जा सकता है ' शून्य'। कि happend जब मैं if (! Doc.username) में doc.username तक पहुंचने की कोशिश {Node.js और mongoose (mongodb) त्रुटि नल

मेरे कोड:

function checkAccDb(username, password) { console.log(2); 
    /* Check if accounts exists in db */ 
    db.findOne({username: username}, function(err, doc){ console.log(3); 
     if(err) throw err; 

     if(!doc.username) { 
      add2stack(username, password); 
     } 
     else if(doc.status == 200) { 
      end(username, password, 1000); 
     } 
     else if(doc.status == 401) { 
      if(doc.password == password) 
       end(username, password, 401); 
      else 
       add2stack(username, password); 
     } 
     else { 
      add2stack(username, password); 
     } 
    }); 
} 

किसी को भी कृपया मुझे समझा सकते हैं कि यहाँ क्या हो रहा है?

धन्यवाद!

+0

आपको कौन सी लाइन त्रुटि मिल रही है? –

उत्तर

9

क्वेरी सफल होता है लेकिन कोई भी मैच नहीं मिल रहा है, इसलिए दोनों err और doc अशक्त हैं। आपको यह जांचना होगा कि doc शून्य है और उस मामले को उचित तरीके से संभाल लें।

0

एक ठेठ कार्यान्वयन इस

db.findOne({username: username},function(err, doc) { 
    if (err) { 
    // handle error 
    } 
    if(doc != null) 
    { 
    if(!doc.username) 
    { 
     //handle case 
    } 
    else 
    { 
     //handle case 
    } 
    } 
}); 
0

तरह बातें निम्नलिखित समाधान की जांच प्राप्त करने के लिए होगा। 1. मॉडल नाम की जांच करें जिसे आपने परिभाषित किया है या फ़ोल्डर का नाम जहां आपके सभी मॉडल मौजूद हैं, सही है क्योंकि मेरे मामले में मॉडल फ़ोल्डर में जहां मैंने अपने सभी मॉडलों को परिभाषित किया है, मैं अलग-अलग मॉडल नाम का उपयोग कर रहा था ताकि वहां कोई न हो मॉडल नाम दिया गया है, कि मैं त्रुटि प्राप्त कर रहा था। 2. स्कीमा नाम या फ़ोल्डर का नाम जांचें जहां यह स्थित है।

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