Express.js不是`res.send`集吗?

时间:2018-02-26 18:58:09

标签: javascript node.js express set

我在node.js中创建了set,我正尝试使用Express.jsres.sendres.json发送给客户端在客户端显示为空。这是我的代码:

app.get('/test-endpoint', function(req, res) {
    let set1 = new Set();
    set1.add('SOME ITEM');
    console.log('Set 1:', set1);  // logs out set1 correctly in the terminal (Set 1 Set: { 'SOME ITEM' })

    res.json(set1);  // when this gets to the client side it is an empty set ({})
});

为什么会这样?这是Express.js问题吗?

1 个答案:

答案 0 :(得分:7)

Express response.json函数使用JSON.stringify发送数据。并且因为JSON.stringify除了函数之外还忽略所有符号键控属性。这就是你在客户端收到一个空对象的原因。

查看JSON.stringify

的更多信息

console.log(JSON.stringify({ prop: 5, foo() {}, [Symbol('s')]: 'symbol' }));
// -> "{"prop":5}"

console.log(JSON.stringify(new Set([1, 'two', null])));
// -> "{}"