gpt4 book ai didi

javascript - 我们如何使用 Async,在 nodeJS 中最好的方法是什么

转载 作者:行者123 更新时间:2023-11-30 09:35:41 24 4
gpt4 key购买 nike

我正在尝试将查询传递到我的数据库,然后将结果发送到我的客户端,但看起来请求是异步的,因为我的请求发生在我的发布请求返回值之后。

如何设置等待请求?

我的数据库连接

var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'my_password',
database: 'MEETME'
});

connection.connect(function(err) {
if (err) {
console.log("error while connecting to database");
console.log(err.code);
}
});

// function that query database <-------

function queryDatabase(userQuery) {
connection.query(userQuery, function(err, result) {
if (err) {
throw err;
}
console.log("before");
return result;
});
}

这是我的发帖请求

//POST
app.post('/signin', function(request, response) {
var query = queryDatabase("SELECT EMAIL FROM MEMBER WHERE ID_MEMBER = 3");
console.log(query);
console.log("after");
response.end(query, 200);
});

控制台的结果是:

undefined
after
before

最佳答案

更改 queryDatabase 函数的实现以返回 promise 。可以等待任何返回 promise 的函数。

function queryDatabase(userQuery){
return new Promise((resolve,reject) => {
connection.query(userQuery, function(err, result){
if(err){
reject(err);
}
console.log("before");
resolve(result);
});
});
}



app.post('/signin', async function(request, response){
var query = await queryDatabase("SELECT EMAIL FROM MEMBER WHERE ID_MEMBER = 3");
console.log(query);
console.log("after");
response.end(query, 200);
});

关于javascript - 我们如何使用 Async,在 nodeJS 中最好的方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43702747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com