Node.js 中与 MySQL 的异步/等待
在 Node.js 中,数据库调用等异步操作可能难以管理。一种方法是使用受 C# 启发的 async/await 语法。然而,这种语法对于 Node.js 新手来说可能有点陌生。
使用 Async/Await 同步 MySQL 结果
提供的代码演示了需要四个 MySQL 查询的情况串行执行,并将其结果附加到单个字符串。但是,由于代码同步运行,因此在附加最终字符串时,变量 string1 到 string4 保持为空。
为了解决这个问题,Node.js 版本 8 引入了 util.promisify(),它允许使用 Promises原生 Node.js 模块,例如 MySQL。以下是如何使用 async/await 和 util.promisify() 实现所需的行为:
const mysql = require('mysql'); const util = require('util'); const conn = mysql.createConnection({ // your database connection parameters }); // promisify the query method const query = util.promisify(conn.query).bind(conn); (async () => { try { // execute the queries asynchronously const [rows1, rows2, rows3, rows4] = await Promise.all([ query('query1'), query('query2'), query('query3'), query('query4'), ]); // append the results to a single string const appendedText = rows1 + rows2 + rows3 + rows4; // do something with the appended text } catch (err) { // handle any errors } finally { // close the database connection conn.end(); } })();
此修改后的代码使用 async/await 并行执行查询,确保同步检索结果,并将它们存储在一个数组中。然后使用该数组将结果连接到所需的字符串中。
以上是Async/Await 和 util.promisify() 如何解决 Node.js 中的串行 MySQL 查询问题?的详细内容。更多信息请关注PHP中文网其他相关文章!