【问题标题】:Sails.js. Check if user existsSails.js。检查用户是否存在
【发布时间】:2016-04-01 17:10:07
【问题描述】:

大家好,是 Sails.js 的新手(使用 MySQL) 我正在尝试查找用户在注册之前是否已经存在。

这是代码:

register:function(req, res, next){
    var params = req.params.all();

    User.find({
        or : [
            { usrnm:params.usrname },
            { eml:params.eml }
        ]
    })
    .exec(function (err, user){
        if (err) {
            return res.negotiate(err);
        }
        if (user) {
            res.status(400);
            return res.json('User already exists!');
        }
    });

    User.create(params, function(err, user){
        if(err){
            return next(err);
        }
        res.status(201);
        res.json(user);
    });
}

问题是:

响应总是“用户已经存在!”状态码 - 400

  • 如果用户存在具有给定的用户名或/和电子邮件,则无论如何都会显示上述消息,然后控制台中会记录一些内容(我不明白)并且用户没有像在我的 MySQL 中那样创建两个字段是唯一的。
  • **如果用户不存在**用户在后面创建,但仍然显示上述消息。

我只想在用户存在时显示消息(即,如果给定的凭据匹配)否则以 201 响应

【问题讨论】:

  • 看起来您正在创建用户,即使他们确实存在,您需要在检查用户是否存在后将其放在 else 块中
  • 是的,代码在下面……
  • 尝试将 Creation 部分放在“else”中,但问题仍然存在
  • 你试过下面的代码了吗?你能用你的新代码更新吗?
  • 我尝试了下面的确切代码,但没有成功

标签: javascript mysql node.js sails.js


【解决方案1】:
register:function(req, res, next){
    var params = req.params.all();

    User.find({
        or : [
            { usrnm:params.usrname },
            { eml:params.eml }
        ]
    })
    .exec(function (err, users){
        if (err) {
            return res.negotiate(err);
        }
        if (users.length) {
            res.status(400);
            return res.json('User already exists!');
        } else {
             User.create(params, function(err, user){
              if(err){
                return next(err);
              } else {
                res.status(201);
                res.json(user);
              }
           });
        }
    });
}

如果具有这些参数的用户尚不存在,则应调用 create user 方法,因此应将其放入回调中。

User.find() 函数返回一个数组,所以需要检查它的长度,看看是否有匹配的对象。

【讨论】:

  • 不,没有创建新用户仍然收到相同的消息,但这次没有收到任何日志
  • 即使用户不存在,您是否收到“用户存在”消息?
  • 是的,无论如何我都收到了消息
  • 谢谢,如果它解决了您的问题,请您接受答案:)
【解决方案2】:

好的,伙计们,我想出了一个解决方案,我会把它放在这里以防万一它对某人有帮助

if (user) { // will be true even if user = [] 
   res.status(400);
   return res.json('User already exists!');
}

如果在数据库中找不到用户,user= [ ] ,这意味着 [ ] != false ,因此显示范围内的消息。

【讨论】:

    猜你喜欢
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2018-03-16
    • 2012-12-12
    • 2015-12-04
    • 1970-01-01
    相关资源
    最近更新 更多