Sails.js Sails js,使用电子邮件或用户名查找用户
我试图登录用户使用用户名或电子邮件,即用户可以输入电子邮件或密码,应该能够登录。然而,到目前为止,我能够使用其中一个 这是迄今为止尝试的代码Sails.js Sails js,使用电子邮件或用户名查找用户,sails.js,Sails.js,我试图登录用户使用用户名或电子邮件,即用户可以输入电子邮件或密码,应该能够登录。然而,到目前为止,我能够使用其中一个 这是迄今为止尝试的代码 authenticate: function (req, res) { var username = req.body.username; var email = req.body.email; users.findOne({ or: [ {username: userna
authenticate: function (req, res) {
var username = req.body.username;
var email = req.body.email;
users.findOne({
or: [
{username: username},
{email: email}
]
}).exec(function(err, user) {
console.log(user);
if (err) {
return res.json({err});
} else if (!user) {
var err = new Error('User not found.');
err.status = 401;
return res.json({err});
} else {
require('bcrypt').compare(req.body.password, user.password, function(err, result) {
if(result === true) {
return res.json({user});
} else {
return res.json({err});
}
});
}
});
}
虽然sails waterline不如直接访问任何一个db强大,但它可以在这里做您想要做的事情,甚至更多。这篇文章给出了一些可能的例子 我不知道您是如何将用户名或电子邮件传递给您的请求对象的,但类似的方法应该可以工作:
authenticate: function(req, res) {
var username = req.param('username'); // or however you get this
var email = req.param('email'); // or however you get this
Users.findOne({
or: [{username: username}, {email: email}]
}).exec(function(err, user) {
// handle the error, or make use of found user...
});
}
您还可以处理用户将用户名或电子邮件输入给您的情况
var identifier = req.param('identifier'); // could be a username or an email
然后将或数组修改为:
or: [{username: identifer}, {email: identifier}]
如果使用action 2样式,则可以执行以下操作
```
var identifier = inputs.identifier;
var userRecord = await User.findOne({
or : [{username: identifier}, {email: identifier}]
});
我正在请求正文中传递参数。请参阅更新的代码,我使用了您的建议,但将循环结构转换为JSONTry时出错,将用户或错误放在res.json中,而不是{user}或{error}。在使用res结束之前,是否可以使用console.logs查看是否获得预期结果?用户肯定应该是可编程的,但是错误可能有一些循环引用。可能res.senderror会起作用。抱歉,这是我的错误,我只提供了一个参数。很有效,谢谢你的帮助和时间。