节点MySQL – 在发送之前编辑响应

我正在使用NodeMySQL 。 我正在从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' } ] 

我想在发送之前编辑响应。 我希望idkeyvaluepost 。 喜欢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; });