Sailsjs:检查用户

时间:2016-05-29 21:14:38

标签: angularjs angularjs-directive sails.js

我正在尝试检查用户在注册之前是否已经退出但不能为我工作 当我在邮递员中测试它仍然是创建用户的任何想法?

  create: function (req, res) {
    if (req.body.password !== req.body.confirmPassword) {
      return res.json(401, {err: 'Password doesn\'t match, What a shame!'});
    }
    User.find(req.body).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(req.body).exec(function (err, user) {
          if (err) {
            return res.json(err.status, {err: err});
          }
          // If user created successfuly we return user and token as response
          if (user) {
            // NOTE: payload is { id: user.id}
            res.json(200, {user: user, token: jwToken.issue({id: user.id})});
          }
        });
  }
});

2 个答案:

答案 0 :(得分:0)

尝试在此行中编辑代码

User.find(req.body).exec(function(err,users){});

来: -

   User.findOne({email:params.email}).exec(function(err,user){
    if(user){
    /**
    *user exists !
    */
    }else{
    /**
    *create new user 
    */
    }

}

  

因为您使用不存在的条件查找,所以它会返回   null并且每次都创建新用户

答案 1 :(得分:0)

如果您想让用户拥有唯一的用户名和/或电子邮件,您可以使用unique在模型' s attribute definition中输入:

attributes: {
  username: {
    type: 'string',
    unique: true
  }
}

然后您的控制器方法如下所示:

create: function (req, res) {
    if (req.body.password !== req.body.confirmPassword) {
      return res.json(401, {err: 'Password doesn\'t match, What a shame!'});
    }
    User.create(req.body, function (err, user) {
      if (err) {
        return res.negotiate(err); // validation error will be automatically passed there
      }
      res.json(200, {user: user, token: jwToken.issue({id: user.id})});
    });
});