【问题标题】:Sailsjs : check userSailsjs:检查用户
【发布时间】:2016-05-29 21:14:38
【问题描述】:

我正在尝试检查用户在注册之前是否已经退出但对我不起作用 当我在邮递员中测试时,它仍然创建用户有什么想法吗?

  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})});
          }
        });
  }
});

【问题讨论】:

  • User.find() 接受Waterline criteria,而不仅仅是一个对象。
  • @Claies 我正在尝试User.find({email:params.email}) 但不起作用
  • 你为什么从req.body变成params?您的 create 函数甚至没有 params 属性。
  • @Claies 我已经拥有所有参数var params=req.params.all();
  • sails 中有一个方便的方法可以查找或创建 :) sailsjs.org/documentation/reference/waterline-orm/models/…

标签: angularjs angularjs-directive sails.js


【解决方案1】:

尝试在此行中编辑您的代码

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 
    */
    }

}

因为您将 find 与不存在的条件一起使用,所以它返回 null 并在每次创建新用户

【讨论】:

  • 当我尝试创建新电子邮件时它对我不起作用
【解决方案2】:

如果您想让用户具有唯一的用户名和/或电子邮件,您可以使用unique 输入模型的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})});
    });
});

【讨论】:

    猜你喜欢
    • 2018-08-10
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    相关资源
    最近更新 更多