2012-10-13 149 views
5

Tengo una consulta findOne y cada vez que verifico si devolvió un documento vacío me sale un error diciendo 'no puedo leer la propiedad' nombre de usuario 'de nulo'. Que esto pasó cuando intento acess DOC.UserName en si (DOC.UserName!) {Error Node.js y mongoose (mongodb) no se puede leer la propiedad '' nulo

Mi código:

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

Podría alguien por favor me explique lo que está pasando aquí?

Gracias!

+0

¿En qué línea se obtiene el error? –

Respuesta

9

La consulta tiene éxito pero no encuentra ninguna coincidencia, por lo que err y son nulos. Debe verificar si doc es nulo y manejar ese caso de manera apropiada.

0

Una aplicación típica sería así

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

Para conseguir la hora siguiente solución cosas. 1. Compruebe que el nombre del modelo que ha definido o el nombre de la carpeta donde están presentes todos sus modelos debe ser correcto porque en mi caso en la carpeta de modelos donde he definido todos mis modelos estaba usando un nombre de modelo diferente para que no haya modelo llamado así, es que estaba recibiendo el error. 2. Verifique el nombre del esquema o la carpeta donde se encuentra.

Cuestiones relacionadas