我正在使用Node
和MySQL
。我正在Node中从MySQL中提取数据:
app.get('/getposts', (req, res) => {
connection.query("SELECT * FROM posts", function(err, rows, fields){
if(err){
console.log(err);
}
else if(rows.length) {
res.send(rows) // <= Edit this res before sending.
}
else {
res.send('No Posts')
}
});
});
我收到以下回复:
[
{id:1, name:'post1', desc: 'post1 desc' },
{id:2, name:'post2', desc: 'post2 desc' },
{id:3, name:'post3', desc: 'post3 desc' }
]
我想在发送之前编辑响应。我希望id
为key
,value
为post
。喜欢1,我想要1:{id:1, name:'post1', desc: 'post1 desc'}
。所以整个响应应该是这样的:
[
1: {id:1, name:'post1', desc: 'post1 desc' },
2: {id:2, name:'post2', desc: 'post2 desc' },
3: {id:3, name:'post3', desc: 'post3 desc' }
]
我怎样才能做到这一点?非常感谢。
答案 0 :(得分:2)
你需要这样的东西,
var jsonObj = [
{id:1, name:'post1', desc: 'post1 desc' },
{id:2, name:'post2', desc: 'post2 desc' },
{id:3, name:'post3', desc: 'post3 desc' }
];
var keyArr = [];
for(var index in jsonObj){
var obj = {};
obj[jsonObj[index].id] = jsonObj[index];
keyArr.push(obj);
}
console.log(keyArr);
P.S:这不是有效的json或数组
[
1: {id:1, name:'post1', desc: 'post1 desc' },
2: {id:2, name:'post2', desc: 'post2 desc' },
3: {id:3, name:'post3', desc: 'post3 desc' }
]
最好的替代方案是,
[ { '1': { id: 1, name: 'post1', desc: 'post1 desc' } },
{ '2': { id: 2, name: 'post2', desc: 'post2 desc' } },
{ '3': { id: 3, name: 'post3', desc: 'post3 desc' } } ]
答案 1 :(得分:0)
var obj = [
{id:1, name:'post1', desc: 'post1 desc' },
{id:2, name:'post2', desc: 'post2 desc' },
{id:3, name:'post3', desc: 'post3 desc' }
];
var arr = Object.keys(obj).map(function(key){
var tempObject = {};
tempObject[obj[key].id] = obj[key];
return tempObject;
});