【发布时间】:2020-05-19 13:52:08
【问题描述】:
我在 node/express JS 应用程序中使用 MySQL 时遇到了一些问题。似乎当尝试在异步函数中访问 MySQL 数据库时,代码将“跳过”SQL 并同步运行。这是我的代码;我正在调用 getDeparturesForStop 方法。
async function getDeparturesForStop(stop_id, route_type, con) {
console.log("---Log before Asynch---");
departures = await getDeparturesFromDatabase(con,stop_id);
console.log("departures is : ");
console.log(departures);
console.log("---Log after Asynch---")
}
getDeparturesFromDatabase 方法:
async function getDeparturesFromDatabase(con,stop_id){
let myresult;
con.query(`select * from departures WHERE stopID = ${stop_id} AND timestamp = '2020-04-08 13:48:00'`,function (err, result, fields){
myresult = result[0];
console.log("MyRes Inside sql query is : ");
console.log(result[0]);
});
return myresult;
}
我期望的结果是:
---Log before Asynch---
MyRes Inside sql query is :
//The result from the SQL Query
departures is :
//The result from the SQL Query
---Log after Asynch---
但是,似乎 asynch 函数在所有操作之后都被调用了。实际输出为:
---Log before Asynch---
departures is :
undefined
---Log after Asynch---
MyRes Inside sql query is :
//The result from the SQL Query
我不确定我是否错误地使用了这些方法。只有在 Async 函数中使用 MySQL Query 时才会发生这种情况。例如,如果我要在以下 fassion 中分配一个变量,它将按预期输出:
async function getDeparturesFromDatabase(con,stop_id){
let myresult = 5;
return myresult;
}
这将按预期异步返回值:
---Log before Asynch---
departures is :
5
---Log after Asynch---
我不确定这是 MySQL 库的问题,还是我开发方法的方式的问题。
【问题讨论】:
标签: javascript mysql express asynchronous