有时,当我运行此代码时,我收到以下错误。
Error: Can't set headers after they are sent.
为什么会这样?我该如何解决?
User.findOne({username: username}, function(err, user) {
if (err) {
console.log(err);
res.json({
success: false,
message: "Unknown error."
});
}
if (user != undefined) {
res.json({
success: true,
message: "User exists."
});
}
else {
res.json({
success: true,
message: "User does not exist."
});
}
});
答案 0 :(得分:6)
即使出现mongoose错误,您的代码仍会继续运行,从而导致您的应用尝试响应请求两次。只需在json响应后添加一个返回值。像这样:
if (err) {
console.log(err);
res.json({
success: false,
message: "Unknown error."
});
return;
}
答案 1 :(得分:2)
有时,DB会在出现错误时响应两次。要结束回复,只需返回;
if (error) {
console.log(error);
response.json({
success: false,
message: "An error occurred."
});
return;
}
答案 2 :(得分:0)
如果第一个条件为真,那么应用程序不会转到任何其他条件来发送响应
else if (user != undefined) {