typescript - 如何修复无法在将标头发送到客户端后设置标头错误?
问题描述
我有 2 个问题,通过使用进行了搜索查询express get method
,它工作正常,它得到了请求的票证,问题是我不断收到错误,即使方法正在运行,所以第一个问题是为什么我不断收到这些错误以及如何修复它?
控制台日志:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:558:11)
at ServerResponse.header (C:Project\server\node_modules\express\lib\response.js:771:10)
at ServerResponse.json (C:Project\server\node_modules\express\lib\response.js:264:10)
at ServerResponse.send (C:Project\server\node_modules\express\lib\response.js:158:21)
at C:Project\server\index.ts:63:7
at Layer.handle [as handle_request] (C:Project\server\node_modules\express\lib\router\layer.js:95:5)
at next (C:Project\server\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:Project\server\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:Project\server\node_modules\express\lib\router\layer.js:95:5)
at C:\Project\server\node_modules\express\lib\router\index.js:281:22
代码:
app.get(APIPath, (req, res) => {
//@ts-ignore
const search:String = req.query.search;
if(search !== undefined){
const filteredTickets = tempData.filter((t) => (t.title.toLowerCase() + t.content.toLowerCase()).includes(search.toLowerCase()));
res.send(filteredTickets);
}
// @ts-ignore
const page: number = req.query.page || 1;
const paginatedData = tempData.slice((page - 1) * dataProps.getPageSize(), page * dataProps.getPageSize());
console.log("Server: Page " + page + " was sent!");
console.log("Server: Search query: " + search)
res.send(paginatedData);
});
如您所见,我在同一个函数中进行了 2 个查询,页面查询工作得非常好,我尝试组合它们的原因是因为我希望在搜索其他参数后仍然能够拥有页面(页面限制为 20) ,但目前他们没有一起工作,因为我不知道该怎么做。这就引出了第二个问题,我如何将这两个查询结合起来,使它看起来像这样https://localhost:3000/?page=[Page]/?search=[Search request]
解决方案
您不能res.send()
多次调用。res.send()
不会自行停止函数的执行,因此您必须手动返回。
return res.send(filteredTickets);
否则,该函数将继续执行并进行第二次res.send()
调用。
推荐阅读
- wordpress - register_rest_route 总是给出 JSON 输出
- javascript - 如何从 django 将数据从 html 模板传递给 js
- reactjs - 另一种在本地运行 react app 的配置
- git - 尝试推送到远程存储库时出现多个错误
- django - django social auth 不返回用户
- pandas - 最佳匹配位置数据 - 两张表
- openmodelica - FMU 的通信频率与仿真时间
- iis - 如何使用 Windows 身份验证和 IIS 配置 Blazor
- c# - 完全退出 ASP.NET
- python - 如何使用 Scrapy 下载、解压缩和读取数据到 csv