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


实际上,我的代码运行良好,但是我需要像这样的数组:


  第二部分:[服务器1,服务器2,服务器3,服务器4,服务器5]


所以,伙计们,我可以得到像第二部分而不是第一部分这样的输出。其实我不明白我是如何实现的。您的帮助对我非常感激。谢谢

最佳答案

RowDataPacket表示对象是RowDataPacket类的实例。感觉
  可以将结果视为正常对象。
  
  mysql api总是返回行/结果{array},因此您可以简单地从
  结果[0]


enter code here


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

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()
})


参考https://www.bountysource.com/issues/5457730-using-node-mysql-with-promises

关于mysql - 我们可以使用nodeJs中的rest API从数据库查询返回数组吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48170500/

10-10 11:50