数据在res.json()中为空,但它在res.json()调用之前和之后存在

时间:2016-10-01 20:33:13

标签: javascript node.js express

我正尝试通过res.json()通过Express发送json响应,但通过records发送的对象中res.json()的值为空。

我有这段代码:

stats.activities(params).then(res => {
    processActivities(res, response => {
        console.log(response); // => logs response properly
        globalRes.json({
            ok: true,
            message: '',
            records: response // response is an empty array
        });
        console.log(response); // => logs response properly
    });
});

以下是我的console.logs()

[ players: [ [ [Object], [Object], [Object] ] ] ]
[ players: [ [ [Object], [Object], [Object] ] ] ]

以下是我要回复的回复(邮递员):

{
    "ok": true,
    "message": "",
    "records": []
}

有什么可能导致这种情况的想法吗?

2 个答案:

答案 0 :(得分:3)

这不是有效的数组:

[ players: [ [ [Object], [Object], [Object] ] ] ]

数组具有数字索引和长度。您的数组有一个名为player的属性,在调用JSON.stringify时会被忽略。

以下是展示问题的示例:

let a    = [];
a.player = 'jack';
console.log(JSON.stringify(a)); // []

您可能想要一个对象:

let a    = {};
a.player = 'jack';
console.log(JSON.stringify(a)); // {"player":"jack"}

答案 1 :(得分:0)

什么是globalRes?通常你应该使用一个响应变量,该变量由回调函数抓取。您可能尝试使用某种解决方法,并且可能在实际发送globalRes之后执行console.logs。

节点主要是异步的。始终牢记这一点。