Error: Can't set headers after they are sent if else statement
Error: Can't set headers after they are sent if else statement
虽然这似乎是一个非常常见的问题 - 根据我所阅读的内容,我看不出我的代码有问题。下面你会看到,如果条件满足,我正在使用 return,所以我认为它不会尝试用我的其他条件设置 headers。请看一下,如果我在这里遗漏了什么,请告诉我:
// get user by id
app.get('/api/users/:userId', function(req, res) {
var userParam = req.params.userId;
for (var i = 0; i < users.length; i++) {
if (users[i].id === userParam) {
return res.status(200).json({user: users[i]});
} else {
res.sendStatus(404);
}
}
});
问题是,除非请求的用户是用户数组中的第一个元素,否则在后续元素匹配之前,您将使用 404 响应。有更好的方法可以在数组中找到匹配项(请参阅 ),但目前使用您的方法:
// get user by id
app.get('/api/users/:userId', function(req, res) {
var userParam = req.params.userId;
for (var i = 0; i < users.length; i++) {
if (users[i].id === userParam) {
return res.status(200).json({user: users[i]});
}
}
// No match in loop
res.sendStatus(404);
});
虽然这似乎是一个非常常见的问题 - 根据我所阅读的内容,我看不出我的代码有问题。下面你会看到,如果条件满足,我正在使用 return,所以我认为它不会尝试用我的其他条件设置 headers。请看一下,如果我在这里遗漏了什么,请告诉我:
// get user by id
app.get('/api/users/:userId', function(req, res) {
var userParam = req.params.userId;
for (var i = 0; i < users.length; i++) {
if (users[i].id === userParam) {
return res.status(200).json({user: users[i]});
} else {
res.sendStatus(404);
}
}
});
问题是,除非请求的用户是用户数组中的第一个元素,否则在后续元素匹配之前,您将使用 404 响应。有更好的方法可以在数组中找到匹配项(请参阅
// get user by id
app.get('/api/users/:userId', function(req, res) {
var userParam = req.params.userId;
for (var i = 0; i < users.length; i++) {
if (users[i].id === userParam) {
return res.status(200).json({user: users[i]});
}
}
// No match in loop
res.sendStatus(404);
});