Javascript Express.js res.json追加到响应对象

Javascript Express.js res.json追加到响应对象,javascript,node.js,json,express,Javascript,Node.js,Json,Express,我试图使用Express中的res.json()函数返回一些json数据,但不是每次都返回一个新的json对象,而是每次都附加到旧的json对象上。这意味着我在同一响应对象中接收到重复数据 我的代码如下所示: await Promise.all(promises) .then(responses => res.json(responses)) .catch(error => console.error(error)) 返回的数据示例: [ [data] ] 第二个请求返回了数据示

我试图使用Express中的res.json()函数返回一些json数据,但不是每次都返回一个新的json对象,而是每次都附加到旧的json对象上。这意味着我在同一响应对象中接收到重复数据

我的代码如下所示:

await Promise.all(promises)
.then(responses => res.json(responses))
.catch(error => console.error(error))
返回的数据示例:

[
[data]
]
第二个请求返回了数据示例:

[
[data],
[data(1)]
]
我的代码返回我想要的响应列表,但是在对同一个函数的重复请求中,新的响应将附加到旧响应的数据中并发送回。这是有意的吗?我做错什么了吗

编辑:以下是我的上下文代码的其余部分。我不熟悉js和异步编程,所以如果我正在做的事情严重错误,请告诉我

const fetch = require('node-fetch')
const authFunctions = require('./auth')
var bearer_token
const space_id = 11111
let id_promises = []


async function get_category_rooms(category_id)
{
    return fetch(`https://url.com/api/${category_id}`,
    {
        headers:

        {
            'Authorization': `Bearer ${bearer_token}`
        }
    }).then(response => response.json())
    .then(data => data.map(category => category.items))
    .catch(err => console.error(err))
}

async function get_category_ids() {
    return fetch(`https://url.com/api/${space_id}`,
    {
        headers:
        {
            'Authorization': `Bearer ${bearer_token}`
        }
    })
    .then(response => response.json())
    .then(data =>
        {
            categories = data[0]["categories"].filter(category => category.name !== "category i don't want")
            categories.forEach(category_item =>
            {
                id_promises.push(new Promise((resolve, reject) =>
                {
                    resolve(get_category_rooms(category_item.cid))
                }))
            })
        })
}

async function get_room_bookings(room_id) {
    return fetch(`https://url.com/api/${room_id}`,
    {
        headers:
        {
            'Authorization': `Bearer ${bearer_token}`
        }
    })
    .then(response => response.json())
    .then(data => data)
}
async function get_not_group_room_reservations(req,res)
{
    let room_promises = []
    if (!await authFunctions.auth_check(bearer_token))
    {
        console.log('invalid bearer token. changing bearer')
        bearer_token = await authFunctions.auth()
    }
    await get_category_ids()
    let rooms = await Promise.all(id_promises)
    .then(responses =>
        {
            let room_ids = responses.flat(2)
            room_ids.forEach(room_id =>
            {
                room_promises.push(new Promise((resolve, reject) =>
                    {
                        resolve(get_room_bookings(room_id))
                    }))
            })
        })
    .catch(error => console.error(error))
    await Promise.all(room_promises)
        .then(responses => res.json(responses))
        .catch(error => console.error(error))
}

你能提供更多的代码来更清楚地理解吗?我建议你把
让房间\你的承诺=[]
放在
获取非团体\你的房间\预订
功能中。我怀疑你会遇到类似的问题,因为
id \你的承诺
哦,我完全理解你现在的意思。因为它们是在全球范围内被宣布的,所以在第二次通话中它们仍然是满的。我来看看这是否有效。谢谢大家!@菲尔,你完全正确。我已切换到在
get\u not\u group\u room\u reservations
中声明
room\u承诺
,并在
get\u category\u id
中声明
id\u承诺。然后我在
中返回
id\u promises
的值。然后(()=>id\u promises)
。谢谢你的帮助!