节点MySQL – 在发送之前编辑响应
我正在使用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' } ]
我怎样才能做到这一点? 非常感谢。
你需要这样的东西,
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);
PS:这不是一个有效的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' } ]
最好的替代scheme是,
[ { '1': { id: 1, name: 'post1', desc: 'post1 desc' } }, { '2': { id: 2, name: 'post2', desc: 'post2 desc' } }, { '3': { id: 3, name: 'post3', desc: 'post3 desc' } } ]
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; });