我想从这个函数返回一个JSON对象数组,但是我遇到了格式化问题。我是Node.js的新手,希望能更好地理解它。
function getItems (callback) {
connection.query(SQL_getItems, (err, results) => {
if (err) {
callback(err);
return;
}
callback(null, results.map((item) => `{'name': '${item.name}', 'value': '${item.value}'}`));
});
}
当前的JSON如下所示:
["name: test, value: 1","name: test2, value: 0"]
我想要的是一个JSON对象数组
[{"name": "test","value": "1"},{"name": "test2","value": "0"}]
我已经尝试过调整格式,但无法完全正确。我尝试过JSON.parse,但它已经有效(但并不理想)JSON。
答案 0 :(得分:1)
实际上,使用这样的模板字符串:
`{'name': '${item.name}', 'count': '${item.value}'}`
map
函数将返回一个字符串数组,这就是你所拥有的。要按预期返回JSON对象,我认为您的代码应为:
results.map(item => JSON.stringify({name: item.name, count: item.value}))
p / s:如果我完全记得,您可以将接受标头作为application/json
传递,以便res.send({<JS object>})
自动完成工作。
<强>已更新强>: 你的结果是否像这样,我试过但你的结果不同:
答案 1 :(得分:0)
感谢@thelonglqd指出我正确的方向。问题是结果已经是我需要的格式,所以我对它们进行了双重编码。
function getItems (callback) {
connection.query(SQL_getItems, (err, results) => {
if (err) {
callback(err);
return;
}
callback(null, JSON.stringify(results));
});
}