我们可以使用nodeJs中的rest API从数据库查询返回数组

时间:2018-01-09 14:36:37

标签: mysql node.js rest

我在nodejs中有代码:

app.post("/getServerDetails", function(req, res){
    var id = req.body.id;
    if (con == null)
        con = db.openCon(con);
    Promise.all([
        new Promise((resolve, reject)=>{
            con.query("select serverName from servers where id = ?", [id], function(err, result){
                if(err){
                    resolve(null);
                    res.status(200).json({success: 0});
                }
                resolve(result);
            });
        })
    ])
    .then((results)=>{
        res.status(200).json(results[0]);
    });

});

我在结果[0]中得到了输出:

  

第一部分:[RowDataPacket {serverName:'server1'},RowDataPacket {   serverName:'server2'},RowDataPacket {serverName:'server3'},
  RowDataPacket {serverName:'server4'},RowDataPacket {serverName:   'server5'}]

实际上,我的代码工作正常,但我需要这样的数组:

  

第二部分:[server1,server2,server3,server4,server5]

所以,伙计们,我可以像第二部分而不是第一部分那样输出。其实我不明白我是如何做到这一点的。你的帮助对我很有帮助。感谢

1 个答案:

答案 0 :(得分:0)

  

RowDataPacket显示该对象是RowDataPacket类的实例。感觉   自由地将结果视为普通对象。

     

mysql api总是返回rows / results {array},这样你就可以简单地得到你的结果   导致[0]

enter code here

您也可以跳过代码中的回调和承诺。举个例子

var Promise = require('bluebird')
var mysql = require('mysql')

var connection = mysql.createConnection({ ... })

Promise.promisify(connection.query, connection)('SELECT 1').then(function (rows) {
  console.log('got rows!')
  console.dir(rows)
  connection.end()
}) 

REF。 https://www.bountysource.com/issues/5457730-using-node-mysql-with-promises