async wait 不适用于回调节点(没有承诺)

bip*_*pin 4 node.js express

大家好,我很困惑为什么这在我的连接 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
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在,当我在router.js中获取此连接 js 时 ,下面是示例代码

   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)        
   });      
Run Code Online (Sandbox Code Playgroud)

在连接js文件中,我没有使用promise,那么为什么异步在路由器中不起作用,即它应该仍然有效,因为我使用回调,任何人都可以告诉我我错过了什么或我做错了什么。当我在connection.js文件中使用返回承诺尝试它时,它工作了。我知道异步返回承诺

Que*_*tin 5

你只能等待一个承诺。conn.query不返回承诺。它没有return声明:它返回undefined

您需要承诺您的数据库功能。