2012-10-13 14 views
5

Mam zapytanie findOne, a gdy tylko sprawdzę, czy zwrócił pusty dokument, pojawia się komunikat o błędzie "nie można odczytać właściwości" zero'. Że się stało, gdy próbuję acess doc.username w if (doc.username!) {Błąd Node.js i mongoose (mongodb) nie mogą odczytać właściwości '' o wartości zerowej

Mój kod:

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); 
     } 
    }); 
} 

Czy ktoś może wyjaśnić mi, co tu się dzieje?

Dzięki!

+0

W jakiej linii pojawia się błąd? –

Odpowiedz

9

Zapytanie powiedzie się, ale nie znajdzie żadnych dopasowań, więc zarówno err, jak i doc są puste. Musisz sprawdzić, czy doc ma wartość NULL i odpowiednio obsłużyć tę sprawę.

0

Typowa implementacja będzie jak tego

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

Aby otrzymać czek rozwiązanie następujące rzeczy. 1. Sprawdź nazwę modelu, którą zdefiniowałeś lub nazwę folderu, w którym znajdują się wszystkie twoje modele, musi być w porządku, ponieważ w moim przypadku w folderze modeli, w którym zdefiniowałem wszystkie moje modele, użyłem innej nazwy modelu, ponieważ nie było model o nazwie to, że dostałem błąd. 2. Sprawdź nazwę schematu lub nazwę folderu, w którym się znajduje.

Powiązane problemy