大家好,我是 Sails.js 的新手(使用 MySQL ) 我试图在注册之前找出用户是否已经存在。
这是代码:
register:function(req, res, next){
var params = req.params.all();
User.find({
or : [
{ usrnm:params.usrname },
{ eml:params.eml }
]
})
.exec(function (err, user){
if (err) {
return res.negotiate(err);
}
if (user) {
res.status(400);
return res.json('User already exists!');
}
});
User.create(params, function(err, user){
if(err){
return next(err);
}
res.status(201);
res.json(user);
});
}
问题是:
响应始终为“用户已存在!”,状态代码为 - 400
我想仅在用户存在时显示消息(即,如果给定的凭据匹配),否则以201
响应
答案 0 :(得分:3)
register:function(req, res, next){
var params = req.params.all();
User.find({
or : [
{ usrnm:params.usrname },
{ eml:params.eml }
]
})
.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(params, function(err, user){
if(err){
return next(err);
} else {
res.status(201);
res.json(user);
}
});
}
});
}
如果具有这些参数的用户尚不存在,则应调用create user方法,因此应将其置于回调中。
User.find()函数返回一个数组,因此您需要检查其长度以查看是否有任何匹配的对象。
答案 1 :(得分:0)
好的家伙我想出了一个解决方案,我会把它放在这里,万一它可以帮助某人
if (user) { // will be true even if user = []
res.status(400);
return res.json('User already exists!');
}
如果在数据库中找不到用户,用户为 = [] ,则表示 []!= false 因此,范围内的消息将被显示。