【问题标题】:Node.js - Getting return value from MySQL before proceedingNode.js - 在继续之前从 MySQL 获取返回值
【发布时间】:2020-03-09 21:21:01
【问题描述】:

我目前正在使用 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");

【问题讨论】:

    标签: javascript mysql node.js asynchronous async-await


    【解决方案1】:

    由于run()是异步的,所以需要等待。

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

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

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

    【讨论】:

    • 谢谢!它与我想象的有点不同,但只要我能做到就可以了。
    猜你喜欢
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 2020-03-01
    • 2020-09-24
    • 2011-08-16
    • 1970-01-01
    • 2019-04-23
    • 2020-03-13
    相关资源
    最近更新 更多