Node.js 异步等待不使用回调节点(无承诺)

Node.js 异步等待不使用回调节点(无承诺),node.js,express,Node.js,Express,大家好,我搞不懂为什么这样不行 这是我的连接js文件 function getConnection(callback) { initPool() mysql_pool.getConnection((err, conn) => { if (err) { return callback(err); } return callback(err, c

大家好,我搞不懂为什么这样不行 这是我的连接js文件

    function getConnection(callback) {
        initPool()
        mysql_pool.getConnection((err, conn) => {
            if (err) {
                return callback(err);
            }
               return callback(err, conn);
        });
     }

    function query(queryString, callback) {

        getConnection((err, connection2) => {
            if (connection2 != undefined) {
                if (err) {
                    connection2.destroy();
                return  callback(createDataResponseObject(err, null))
                }
                connection2.query(queryString, function (err, rows) {
                    connection2.destroy();
                    if (!err) {
                        return callback(createDataResponseObject(err, rows))
                    }
                    else {
                        return callback(createDataResponseObject(err, null))
                    }
                });                   
            }

        });
    }
    function createDataResponseObject(error, results) {
        if (error) {
            logger.info(error);
        }
        return {
            error: error,
            results: results === undefined ? null : results === null ? null : results
        }
    }
现在,当我在我的路由器中获得这个连接时,下面是示例代码

   var conn=require("./connection")
   router.post('/test',async function(res,req){
      var query ="select * from users"
      let x= await conn.query(result);
      console.log(x)        
   });      

在连接js文件时,我并没有使用promise,那个么为什么异步在路由器中不工作,也就是说,它应该仍然工作,因为我使用回调。有人能告诉我我缺少了什么或者我做错了什么吗。当我在connection.js文件中尝试使用return-promise时,它正在工作。我知道异步返回承诺

async/await只适用于承诺,它是最重要的语法糖。也就是说,您不能将语法用于回调


查看此链接:

您只能等待承诺
conn.query
不返回承诺。它没有
return
语句:它返回
undefined


您需要修改数据库函数。

异步只适用于承诺,要使事情正常运行,您必须首先将所有函数转换为返回承诺。可以使用promisify.promisify()将所有回调样式函数转换为返回承诺。完成后,您可以将这些函数与async await一起使用。

这意味着它将无法工作,我在connection.js文件中使用了这个函数,即我必须从函数查询中返回承诺???@bipin-是的,我就是这么说的。