首页  >  文章  >  数据库  >  如何在 Node.js 中将异步 MySQL 操作转换为 Promise?

如何在 Node.js 中将异步 MySQL 操作转换为 Promise?

Susan Sarandon
Susan Sarandon原创
2024-10-25 17:28:02828浏览

How to Convert Asynchronous MySQL Operations to Promises in Node.js?

将异步 MySQL 操作转换为 Node.js 中的 Promise

Node.js 的异步特性给来自 Python 的开发人员带来了挑战。为了解决这个问题,此代码片段尝试将 MySQL 操作包装在返回值的异步函数内。然而,由于 Node.js 的异步特性,这种方法不起作用。

要解决此问题,需要重构操作以返回承诺。使用 Bluebird,可以通过以下方式实现:

<code class="javascript">function getLastRecord(name) {
  return new Promise((resolve, reject) => {
    // Establish a connection to MySQL
    const connection = getMySQL_connection();

    // Construct and execute the MySQL query
    const query_str = `SELECT name, FROM records WHERE (name = ?) LIMIT 1`;
    const query_var = [name];
    connection.query(query_str, query_var, (err, rows, fields) => {
      if (err) {
        return reject(err);
      }
      resolve(rows);
    });
  });
}</code>

现在,您可以根据需要处理返回的行:

<code class="javascript">getLastRecord('name_record').then((rows) => {
  // Access the rows and perform operations

  if (rows.length > 20) {
    console.log("action");
  }
}).catch((err) => {
  // Handle any errors
  setImmediate(() => { throw err; });
});</code>

此方法确保操作异步执行,同时允许您使用 Promise 以同步方式处理返回值。

以上是如何在 Node.js 中将异步 MySQL 操作转换为 Promise?的详细内容。更多信息请关注PHP中文网其他相关文章!

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