ホームページ >データベース >mysql チュートリアル >Promise を使用して Node.js で MySQL の戻り値を効率的に処理する方法

Promise を使用して Node.js で MySQL の戻り値を効率的に処理する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 03:28:28875ブラウズ

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

Promise を使用して Node.js で 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 の戻り値をより効率的に処理できます。

以上がPromise を使用して Node.js で MySQL の戻り値を効率的に処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。