9

findOneクエリがあり、空のドキュメントが返されたかどうかを確認すると、「nullのプロパティ「username」を読み取れません」というエラーがスローされます。これは、if(!doc.username){で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);
        }
    });
}

ここで何が起こっているのか誰か説明してもらえますか?

ありがとう!

4

3 に答える 3

11

クエリは成功しますが、一致するものが見つからないため、とは両方ともerrnulldocです。docnullかどうかを確認し、そのケースを適切に処理する必要があります。

于 2012-10-13T06:39:44.887 に答える
2

典型的な実装は次のようになります

db.findOne({username: username},function(err, doc) {
  if (err) {
    // handle error
  }
  if(doc != null)
  {
    if(!doc.username)
    {
        //handle case
    }
    else
    {
        //handle case
    }
  }
});
于 2012-10-13T11:48:42.393 に答える
0

解決策を得るには、次のことを確認してください。1.定義したモデル名、またはすべてのモデルが存在するフォルダーの名前を確認してください。私の場合、すべてのモデルを定義したモデルフォルダーで、モデルがなかったため別のモデル名を使用していたためです。という名前で、エラーが発生していました。2. それが配置されているスキーマ名またはフォルダー名を確認します。

于 2015-07-23T19:25:15.047 に答える