4

ユーザーが重複した名前やメールアドレスを入力しているかどうかを調べようとしています。私はMongoose(およびそのことについてはMongoDb)を初めて使用しますが、私が読んだ内容に基づくと、これは正しいようです。ただし、それはtrueを返します-何があっても。$ orとしてではなく、いずれか1つを個別に検索すると、正常に機能するようです。

// check if user exists
var userExists = function(u, callback) {
  User.find({$or:[ {'username': u.username}, {'email': u.email}]} , function(err,user) {
    if (err) {      // err, so not sure if user exists
        callback(1);
        return;
        } 
    if (user) { // user, so return exists
        callback(1);
        return;
        } 
    //no error, no user
    callback(0);
    });
};

考え?

4

1 に答える 1

6

user.lengthnull かどうかをチェックするメソッドを更新しました。ドキュメントが Mongoose (または MongoDB) によって見つからない場合、null は返されません。

// check if user exists
var userExists = function(u, callback) {
  User.find({$or:[ {'username': u.username}, {'email': u.email}]} , function(err,user) {
    if (err || user.length > 0) {     // user does not come back null, so check length
        callback(1);
        return;
    } 
    //no error, no user
    callback(0);
  });
};
于 2013-01-24T02:43:06.403 に答える