首頁  >  文章  >  資料庫  >  如何在 Node.js 中使用 Promise 高效處理 MySQL 回傳值?

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

Barbara Streisand
Barbara Streisand原創
2024-10-30 03:28:28823瀏覽

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 ,我們擁抱Promise ,我們擁抱Promise ,我們擁抱Promise ,我們擁抱Promise ,我們擁抱Promise ,我們擁抱Promise ,我們擁抱Promise ,我們擁抱Promise ,我們擁抱Promise ,我們擁抱Promise可以在Node.js 中更有效率地處理MySQL 傳回值,利用其非同步功能,同時保持可讀性。

以上是如何在 Node.js 中使用 Promise 高效處理 MySQL 回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn