在Node JS中处理'res'

问题描述 投票:-1回答:3

我对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' });
                }
            })
node.js
3个回答
0
投票

尝试一下...如果您想在比赛后打破循环。

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' });
}

0
投票

这里是代码,请看一下

export LoginApi=function(req,res){
  var loginId=req.body.loginid;
  var password=req.body.password;

  // other code
  res.json({message:'success',data:''})
}

0
投票

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
}
© www.soinside.com 2019 - 2024. All rights reserved.