gpt4 book ai didi

javascript - 尝试使用expressJs获取特定用户时出错

转载 作者:太空宇宙 更新时间:2023-11-04 01:20:32 24 4
gpt4 key购买 nike

我正在尝试从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com