我对NodeJS比较陌生,遇到了问题。来自Angluar UI的传入请求有两个参数(loginId和密码),在Node上,我从本地json文件中读取数据,遍历“用户”数组,并根据匹配的参数,将特定的对象发送到服务器响应。但是,在“用户”数组中有多个对象的情况下,我的逻辑失败了,我还必须为不匹配的对象发送服务器响应。我知道我无法发送多个回复,但这是我需要帮助的地方。任何帮助将不胜感激。
这里是代码:
if (jsonData.users.length > 0) {
jsonData.users.forEach(user => {
if ((reqBody.loginId === user.email || reqBody.loginId === user.mobile) && reqBody.password === user.password) {
res.send({ 'userData': user });
} else {
res.json({ 'userData': 'No records found' });
}
})
尝试一下...如果您想在比赛后打破循环。
if (jsonData.users.length > 0) {
jsonData.users.forEach(user => {
if ((reqBody.loginId === user.email || reqBody.loginId === user.mobile) && reqBody.password === user.password) {
return res.send({ 'userData': user });
}
})
res.json({ 'userData': 'No records found' });
}
这里是代码,请看一下
export LoginApi=function(req,res){
var loginId=req.body.loginid;
var password=req.body.password;
// other code
res.json({message:'success',data:''})
}
res.send
结束响应。因此,第二次使用它不会发送任何内容。
https://www.nodejsconnect.com/blog/articles/sending-multiple-http-responses-expressjs
编辑:我不确定您想要什么,但是我想您想要做这样的事情。->返回与userId和密码匹配的用户,或者返回“未找到记录”(甚至最好发送401-未经授权-状态码)
const user = jsonData.users.find(user => (reqBody.loginId === user.email || reqBody.loginId === user.mobile) && reqBody.password === user.password));
if (user) {
res.send({ 'userData': user });
} else {
res.json({ 'userData': 'No records found' });
// or res.sendStatus(401); // unauth
}