Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyegerakkan Pertanyaan MySQL dengan Async/Await dalam Node.js?

Bagaimana untuk Menyegerakkan Pertanyaan MySQL dengan Async/Await dalam Node.js?

Barbara Streisand
Lepaskan: 2024-11-30 04:41:19
asal
1015 orang telah melayarinya

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

Menyegerakkan Pertanyaan MySQL dengan Async/Await dalam Node.js

Dalam Node.js, kata kunci async/wait membenarkan kod tak segerak untuk ditulis secara serentak. Untuk operasi pangkalan data, seperti pertanyaan MySQL, ini amat berguna untuk memastikan semua keputusan diperoleh sebelum meneruskan.

Cabaran: Pertanyaan Asynchronous

Pertimbangkan kod berikut coretan, yang cuba mendapatkan berbilang hasil pangkalan data dan menambahkannya pada a rentetan:

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;
});
Salin selepas log masuk

Dalam kod ini, setiap pertanyaan dilaksanakan secara tidak segerak, yang membawa kepada tingkah laku yang tidak ditentukan untuk pembolehubah appended_text. Untuk menyelesaikan isu ini, Node.js 8 memperkenalkan ciri yang berkuasa.

Penyelesaian: Promisification dengan Async/Await

Untuk menyegerakkan pertanyaan menggunakan async/wait, anda boleh memanfaatkan fungsi util.promisify() asli bersama-sama dengan modul mysql nod. Berikut ialah contoh:

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();
  }
})();
Salin selepas log masuk

Dalam kod ini:

  1. Anda terlebih dahulu menjanjikan kaedah pertanyaan sambungan untuk mengembalikan Janji.
  2. Dalam fungsi async, anda laksanakan pertanyaan anda secara berurutan dan tunggu keputusannya.
  3. Akhir sekali, anda boleh menambah keputusan kepada pembolehubah appended_text dalam cara yang disegerakkan.

Menggunakan async/await dengan nod mysql memudahkan penyegerakan pertanyaan pangkalan data, membolehkan kod yang lebih mudah dibaca dan diselenggara.

Atas ialah kandungan terperinci Bagaimana untuk Menyegerakkan Pertanyaan MySQL dengan Async/Await dalam Node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan