4

我正在尝试查找用户是否输入了重复的名称和/或电子邮件地址。我是 Mongoose 的新手(以及 MongoDb ),但根据我所阅读的内容,这似乎是正确的。但是,它返回 true - 无论如何。如果我单独查找任何一个,而不是 $or,它似乎工作正常。

// 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.length而不是它是否为空。如果 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 回答