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})});
}
});
}
});
答
尝试编辑你的代码在这行
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})});
});
});
'User.find()'需要[水线条件](https://github.com/balderdashy/waterline-docs/blob/master/queries/query-language.md),而不仅仅是一个对象。 – Claies
@Claies我试试'User.find({email:params.email})'但不能正常工作 – nevergiveup
你为什么要从'req.body'改为'params'?你的创建函数甚至没有'params'属性。 – Claies