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

标签 javascript node.js express asynchronous node-mysql

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

如何设置等待请求?

我的数据库连接

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/

相关文章:

javascript - 使用jquery为外部类按钮动态生成内部按钮

mysql - Mysqljs 中的转义值

javascript - 嵌套对象的 AJV 模式验证

Node.js 未推送所有通知

javascript - 表达和 Sequelize : eager loading belongs to many associations hangs application

javascript - 当我选择具有该 ID 值的选项时,如何显示包含与该 ID 相关的数据的表格?

javascript - 如何从谷歌浏览器扩展中获取 PDF 文件的 URL

javascript - 使用 nodejs 调用 Web 服务

javascript - 单击几次后 ModalPopupExtender 不显示

node.js - 为什么我收到错误 ER_PARSE_ERROR : You have an error in your SQL syntax;