首页 >数据库 >mysql教程 >如何在 Node.js 中使用 Async/Await 同步 MySQL 查询?

如何在 Node.js 中使用 Async/Await 同步 MySQL 查询?

Barbara Streisand
Barbara Streisand原创
2024-11-30 04:41:19963浏览

How to Synchronize MySQL Queries with Async/Await in Node.js?

在 Node.js 中使用 Async/Await 同步 MySQL 查询

在 Node.js 中,async/await 关键字允许异步代码以同步方式写入。对于数据库操作,例如 MySQL 查询,这对于确保在继续之前获得所有结果特别有用。

挑战:异步查询

考虑以下代码代码片段,它尝试检索多个数据库结果并将它们附加到字符串中:

var string1 = '';
var string2 = '';
var string3 = '';
var string4 = '';

DatabasePool.getConnection(function(err, connection) {

        connection.query(query,function (err, result) {
            if (err){};
            string1 = result;
        });

        connection.query(query,function (err, result) {
            if (err){};
            string2 = result;
        });     

        connection.query(query,function (err, result) {
            if (err){};
            string3 = result;   
        });

        connection.query(query,function (err, result) {
            if (err){};
            string4 = result;
        }); 

       //I need to append all these strings to appended_text but  
       //all variables remain blank because below code runs first.
       var appended_text = string1 + string2 + string3 + string4;
});

在此代码中,执行每个查询异步,导致append_text 变量出现未定义的行为。为了解决这个问题,Node.js 8 引入了一个强大的功能。

解决方案:使用 Async/Await 进行 Promisification

要使用 async/await 同步查询,您可以将本机 util.promisify() 函数与节点 mysql 模块结合使用。下面是一个示例:

const mysql = require('mysql');
const util = require('util');
const conn = mysql.createConnection({yourHOST/USER/PW/DB});

// node native promisify
const query = util.promisify(conn.query).bind(conn);

(async () => {
  try {
    // Execute your queries sequentially using await
    const rows1 = await query('select count(*) as count from file_managed');
    const rows2 = await query('select count(*) as count from file_managed');
    const rows3 = await query('select count(*) as count from file_managed');
    const rows4 = await query('select count(*) as count from file_managed');

    // Append the results to the appended_text variable
    var appended_text = rows1.count + rows2.count + rows3.count + rows4.count;

    console.log(appended_text);
  } finally {
    conn.end();
  }
})();

在此代码中:

  1. 您首先承诺连接的查询方法以返回 Promise。
  2. 在 async 函数中,您按顺序执行查询并等待结果。
  3. 最后,您可以将结果附加到以同步方式添加append_text变量。

在node mysql中使用async/await可以简化数据库查询的同步,从而使代码更具可读性和可维护性。

以上是如何在 Node.js 中使用 Async/Await 同步 MySQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn