javascript - Node.js - 在继续之前从 MySQL 获取返回值

标签 javascript mysql node.js asynchronous async-await

我目前正在使用node.js 与我的数据库进行通信。我遇到一个问题,我想在继续之前等待异步数据库查询。

我已经尝试了互联网上的很多例子,但我似乎找不到实现它的方法或它的问题。发生的情况是,mysql查询完后,不等待返回值,就继续执行下一行。

这是我的代码:

//Connection with database
var mysql = require('mysql');
var con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "",
  database: "justcall"
});
console.log("before insert");

function queryPromise(str){
  return new Promise((resolve, reject) => {
    con.query(str, (err, result, fields) => {
      if(err) reject(err);
      resolve(result);
    })
  })
}

async function run(){
  let answer = await queryPromise("INSERT INTO calllog (userId, callId, timeCalled, callDuration, status, callType) VALUES ('27', '33', '2019-11-13 22:30:20', '00:00:01', '1', '1')");
  console.log(answer);
}

run();

console.log("after insert");

最佳答案

由于run()是异步的,因此您需要等待。

run().then(function() { console.log("after insert"); });

如果从另一个异步函数调用它,可以使用await:

async function doit() {
    await run();
    console.log("after insert");
}
doit();

关于javascript - Node.js - 在继续之前从 MySQL 获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847932/

相关文章:

javascript - Ace 编辑器,如何删除除一个之外的所有 keyBindings?

node.js - 如何在子域上运行 socket.io?

javascript - 类型错误 : Cannot read property 'db' of undefined

javascript - 在 Nodejs 中公开函数/构造函数的重复要求

javascript - 显示/隐藏弹出窗口之间的对应关系

javascript - 取消初始化通过 getUserMedia 启动的音频录制

php - IIS 中 PHP 和 ASP 的提示

mysql - 非常慢的 MYSQL 子查询

php - 将两个值从 doInBackground 传递到 onPostExecute

node.js - 如何通过 API 请求将 pdf 发送给客户端