Sailsjs:检查用户

问题描述:

我正在尝试检查用户是否已经在注册之前退出但不适用于我 当我在邮递员测试它仍然创建用户任何想法?Sailsjs:检查用户

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

'User.find()'需要[水线条件](https://github.com/balderdashy/waterline-docs/blob/master/queries/query-language.md),而不仅仅是一个对象。 – Claies

+0

@Claies我试试'User.find({email:params.email})'但不能正常工作 – nevergiveup

+0

你为什么要从'req.body'改为'params'?你的创建函数甚至没有'params'属性。 – Claies

尝试编辑你的代码在这行

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并在前夕创建新用户RY时间

+0

不适用于我,当我尝试创建新电子邮件时显示错误 – nevergiveup

如果你想有唯一的用户名用户和/或邮件,你可以使用模型的attribute definitionunique类型是这样的:

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