不要等待节点js中的mysql数据库结果

时间:2018-11-13 10:45:50

标签: mysql node.js express

我试图从调用函数中使用mysql数据库查询来获取结果,但不等待调用函数中的结果。以下是我的users.js文件代码。我在 getBankDetail 函数中得到了结果,但是在 users 函数中却没有得到结果。

//
// Links
//

a {
   color: $link-color;
   text-decoration: $link-decoration;
   background-color: transparent; // Remove the gray background on active links in IE 10.
   -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.

   @include hover {
      color: $link-hover-color;
      text-decoration: $link-hover-decoration;
   }
}

我的问题是为什么不等待调用函数中的结果?我还使用了异步/等待功能。

1 个答案:

答案 0 :(得分:1)

function getBankDetail(){
  return new Promise((resolve, reject) => {
    db.getConnection(function(err, connection) {
      if (err) reject(err); // not connected!

      connection.query('SELECT * FROM bank', function (error, results, fields) {
        connection.release();

        if (error) reject(err);
        console.log("bank result",results);  //Here I got result
        resolve(results);
      });
    });
  });
}

然后您可以使用let bankDetail = await getBankDetail();

如果要在db.getConnectionconnection.query上使用await,则必须使用 mysql2 / promises 库或自己实现这些功能

这是使用数据库驱动程序的承诺版本时的实现:

async function getBankDetail(){
     const connection = await db.getConnection();
     const data = await connection.query('SELECT * FROM bank');
     connection.release();

     console.log("bank result", data[0]);  //Here I got result

     return data[0];
}