如何在 Node.js 中使用 Promise 高效处理 MySQL 返回值?

Barbara Streisand
发布: 2024-10-30 03:28:28
原创
819 人浏览过

How to Efficiently Handle MySQL Return Values in Node.js Using Promises?

在 Node.js 中使用 Promise 处理 MySQL 返回值

在这种异步编程范例中,处理 MySQL 返回值需要采用不同的方法到像Python这样的语言。本文重点介绍如何使用 Promise 重构代码以有效处理 MySQL 结果。

考虑以下示例:

<code class="javascript">function getLastRecord(name) {
  var connection = getMySQL_connection();

  var query_str =
    "SELECT name, " +
    "FROM records " +
    "WHERE (name = ?) " +
    "LIMIT 1 ";

  var query_var = [name];

  connection.query(query_str, query_var, function (err, rows, fields) {
    //if (err) throw err;
    if (err) {
      //throw err;
      console.log(err);
      logger.info(err);
    } else {
      //console.log(rows);
      return rows;
    }
  }); //var query = connection.query(query_str, function (err, rows, fields) {
}

var rows = getLastRecord('name_record');

console.log(rows);</code>
登录后复制

由于 Node.js 的异步特性,此代码很困难。为了解决这个问题,我们可以采用基于 Promise 的解决方案:

<code class="javascript">function getLastRecord(name) {
  return new Promise(function (resolve, reject) {
    // The Promise constructor should catch any errors thrown on
    // this tick. Alternately, try/catch and reject(err) on catch.
    var connection = getMySQL_connection();

    var query_str =
      "SELECT name, " +
      "FROM records " +
      "WHERE (name = ?) " +
      "LIMIT 1 ";

    var query_var = [name];

    connection.query(query_str, query_var, function (err, rows, fields) {
      // Call reject on error states,
      // call resolve with results
      if (err) {
        return reject(err);
      }
      resolve(rows);
    });
  });
}</code>
登录后复制

现在,我们可以使用 then/catch 块处理返回值:

<code class="javascript">getLastRecord('name_record').then(function (rows) {
  // now you have your rows, you can see if there are <20 of them
}).catch((err) => setImmediate(() => { throw err; })); // Throw async to escape the promise chain</code>
登录后复制

通过拥抱 Promise ,我们可以在 Node.js 中更高效地处理 MySQL 返回值,利用其异步功能,同时保持可读性。

以上是如何在 Node.js 中使用 Promise 高效处理 MySQL 返回值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板