我正在尝试从 Json 文件获取 expressJs 中的特定用户
这是我遇到的错误。
UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
这是我用来获取特定用户的代码:
router.get("/:id", async (req, res) => {
const { id } = req.params;
for (let i = 0; i < usersData.length; i++) {
if (usersData[i].id == id) {
console.log(usersData[i]);
await res.send(usersData[i]);
} else {
res.json({ error: "Error" });
}
}
});
最佳答案
看起来您的循环逻辑需要修改,以避免向客户端发送多个响应。使用您当前的代码,当 usersData
数组中存在多个项目时,就会发生这种情况,看到 res.send()
或 res.json()
在 userData
的每次迭代中调用。
一种可能是按如下方式修改您的代码(假设您只想返回与请求 ID 匹配的第一个用户(如果有)):
router.get("/:id", async (req, res) => {
const { id } = req.params;
// Find user by id
const user = usersData.find(data => data.id === id)
// If user found, send to client or send error json
if(user) {
res.send(user);
}
else {
res.json({ error: "Error" });
}
});
关于javascript - 尝试使用expressJs获取特定用户时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59433535/