gpt4 book ai didi

javascript - 将 header 发送到 Node.JS 中的客户端后无法设置 header

转载 作者:行者123 更新时间:2023-11-30 19:58:44 26 4
gpt4 key购买 nike

我是 Node.JS 的新手,我正在尝试创建一个 GET 端点以从 MongoDB 检索一些信息。我已经设置了路由和 Controller 来处理 GET 请求。当我用 Postman 测试这个 Controller 时,我在 Node 控制台上收到错误消息,“在将 header 发送到客户端后无法设置 header ”,但我可以在 Postman 响应中看到正确的结果。我的代码如下:

'use strict'
const Area = require('../models/area');

exports.get_areas = (req, res, next)=> {
Area.find( {})
.then(data=>{
let flat = data.reduce((data, {price, streets}) => {
streets.forEach(({name, locations}) => {
locations.forEach(({type,code}) => {
data.push({price,name,type,code})
})
})
res.json(data);

}, [])
console.log(flat);


})
.catch(error=>{
return next(error);
});

如果我只有 Controller 而没有 reducer 。我没有这个问题:

exports.get_areas = (req, res, next)=> {
Area.find( {})
.then(data=>{
res.json(data);
})
.catch(error=>{
return next(error);
});
}

在这种情况下,我的 JSON 对象具有以下结构:

[{
"price": 20,
"streets":[{
"name": "nameA",
"locations":[{
"type": "normal",
"code": "code1"
}]
}]
}]

我的错误在哪里?我想返回一个平面 JSON 而不是嵌套的 JSON,因此我正在尝试使用 reduce()。

最佳答案

这是因为您在循环内将数据作为 res.json(data); 返回。当您尝试向单个请求发送多个响应量时,将其移出 reduce 函数代码块。

let flat = data.reduce((data, {price, streets}) => {
streets.forEach(({name, locations}) => {
locations.forEach(({type,code}) => {
data.push({price,name,type,code})
})
})

}, [])
res.json(flat);

关于javascript - 将 header 发送到 Node.JS 中的客户端后无法设置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53631865/

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