我在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/