【发布时间】:2020-06-07 02:58:04
【问题描述】:
所以我在我的节点服务器中创建了一个函数,它接收一个查询字符串,在我的数据库上运行它,然后返回结果。然后,我想在整个路由中使用 async await 来异步使用我的函数,而不是在其中嵌套查询、嵌套查询、嵌套查询等。
代码如下:
const runQuery = queryString => {
console.log("...runQuery")
db.query(queryString, (error, results, fields) => {
if (error) {
console.log("runQuery: FAILURE");
return error;
}
else {
console.log("runQuery: SUCCESS");
return(results);
}
})
}
register.post("/", async (req, res) => {
console.log(req.body);
const results = await runQuery("select * from test1");
res.send(results);
})
数据库应该有 3 个条目,但不幸的是,它什么也没返回。意思是 results 在发送时是一个空变量,这意味着 JS 永远不会正确地等待它来捕获 db 结果。我怎样才能异步使用我的函数,这怎么可能?
【问题讨论】:
-
你的
db对象是什么? -
它是我从另一个文件导入的基本 mysql 连接对象。
-
我知道它是一个连接对象。当人们问起时,我们通常的意思是把代码也放上去,或者像
mysql一样从包some-pacakge中描述它。您正在尝试使用Promise但并非所有软件包都提供承诺支持 -
啊,我明白了。对此表示歉意。但是是的,我今天再次检查了问题,发现 mysql 包没有承诺支持。我的数据库连接来自常规的 mysql 包。
标签: javascript mysql node.js express asynchronous