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

时间:2017-09-17 03:22:06

标签: javascript mysql node.js express

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

我怎样才能做到这一点?非常感谢。

2 个答案:

答案 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;
   });
相关问题