首頁 >資料庫 >mysql教程 >如何在 Node.js 中使用 Async/Await 同步 MySQL 查詢?

如何在 Node.js 中使用 Async/Await 同步 MySQL 查詢?

Barbara Streisand
Barbara Streisand原創
2024-11-30 04:41:19961瀏覽

How to Synchronize MySQL Queries with Async/Await in Node.js?

在Node.js 中使用Async/Await 同步MySQL 查詢

在Node.js 中,async/await 關鍵字允許非同步程式碼以同步方式寫入。對於資料庫操作,例如 MySQL 查詢,這對於確保在繼續之前獲得所有結果特別有用。

挑戰:非同步查詢

考慮以下程式碼程式碼片段,它嘗試檢索多個資料庫結果並將它們附加到字串中:

var string1 = '';
var string2 = '';
var string3 = '';
var string4 = '';

DatabasePool.getConnection(function(err, connection) {

        connection.query(query,function (err, result) {
            if (err){};
            string1 = result;
        });

        connection.query(query,function (err, result) {
            if (err){};
            string2 = result;
        });     

        connection.query(query,function (err, result) {
            if (err){};
            string3 = result;   
        });

        connection.query(query,function (err, result) {
            if (err){};
            string4 = result;
        }); 

       //I need to append all these strings to appended_text but  
       //all variables remain blank because below code runs first.
       var appended_text = string1 + string2 + string3 + string4;
});

在此程式碼中,執行每個查詢非同步,導致append_text 變數出現未定義的行為。為了解決這個問題,Node.js 8 引入了一個強大的功能。

解決方案:使用Async/Await 進行Promisification

要使用async/await 同步查詢,您可以將本機util.promismysqlify 函數與節點sqlify 模組結合使用。以下是一個範例:

const mysql = require('mysql');
const util = require('util');
const conn = mysql.createConnection({yourHOST/USER/PW/DB});

// node native promisify
const query = util.promisify(conn.query).bind(conn);

(async () => {
  try {
    // Execute your queries sequentially using await
    const rows1 = await query('select count(*) as count from file_managed');
    const rows2 = await query('select count(*) as count from file_managed');
    const rows3 = await query('select count(*) as count from file_managed');
    const rows4 = await query('select count(*) as count from file_managed');

    // Append the results to the appended_text variable
    var appended_text = rows1.count + rows2.count + rows3.count + rows4.count;

    console.log(appended_text);
  } finally {
    conn.end();
  }
})();

在此程式碼中:

  1. 您首先承諾連接的查詢方法以傳回 Promise。
  2. 在 async 函數中,您會依序執行查詢並等待結果。
  3. 最後,您可以將結果附加到以同步方式新增append_text變數。

在node mysql中使用async/await可以簡化資料庫查詢的同步,從而使程式碼更具可讀性和可維護性。

以上是如何在 Node.js 中使用 Async/Await 同步 MySQL 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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