我一直在尝试不间断地为我的数据表前端处理这个查询。
这是我的配置JS
var config = {
host : 'localhost',
user : 'root',
password : '',
database : 'ef45db'
}
module.exports = config;
这是我要使用Async的函数(等待查询返回表的列名称)
async function getColumnNames()
{
try{
aColumns = [];
await connection.query('SHOW COLUMNS FROM '+sTable,
function selectCb(err, results, fields){
console.log("entro a getColumnNames");
if(err){
console.log(err);
}
for(var i in results)
{
aColumns.push(results[i]['Field']);
}
connection.end();
});
}catch (e){
console.log(e);
}
}
这是执行该函数的控制器代码:
var mysql = require('mysql2');
var config = require('.././database/config');
var connection = mysql.createConnection(config);
var sIndexColumn = '*';
var sTable = 'users';
var aColumns = [];
module.exports = {
getInfo : async function(req,res,next)
{
var request = req.query;
(async () => await getColumnNames());
console.log(aColumns);
}
我正在尝试获取列的名称,这样我就可以使用DataTable对后端的筛选,因为节点是异步的,所以这个查询正在执行,但是值是未定义的(而且仍然是),我已经阅读了数百篇关于Promises、Bluebird和Async方法的文章,并尝试使其生效,最后一篇我读了很多这是最好的,我选择它是因为代码看起来更干净。有什么想法吗?