我正在尝试检查用户在注册之前是否已经退出但不能为我工作 当我在邮递员中测试它仍然是创建用户的任何想法?
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 :(得分: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})});
});
});