2012-10-13 13 views
5

findOneクエリがあり、空のドキュメントが返されたかどうかを確認すると '' username 'ヌル'。それ起こった私がもし(doc.username!){Node.jsとmongoose(mongodb)エラーがヌルのプロパティ ''を読み取ることができません

私のコードでdoc.usernameをアセスしよう:

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

クエリは成功しますが、一致するものは見つからないため、errdocの両方がnullです。 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.スキーマ名またはフォルダ名を確認します。

関連する問題