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