我们可以在nodejs中使用restapi从数据库查询返回数组吗

l7wslrjt  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(318)

我在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]
所以,伙计们,我可以像第二部分那样输出,而不是第一部分。其实我不明白我是怎么做到的。你的帮助我很感激。谢谢

bbuxkriu

bbuxkriu1#

rowdatapacket表示对象是rowdatapacket类的示例。请随意将结果视为普通对象。
mysql api总是返回行/结果{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()
})

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

相关问题