Heim >Datenbank >MySQL-Tutorial >Wie synchronisiere ich MySQL-Abfragen mit Async/Await in Node.js?

Wie synchronisiere ich MySQL-Abfragen mit Async/Await in Node.js?

Barbara Streisand
Barbara StreisandOriginal
2024-11-30 04:41:19963Durchsuche

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

Synchronisieren von MySQL-Abfragen mit Async/Await in Node.js

In Node.js ermöglichen die Schlüsselwörter async/await asynchronen Code synchron geschrieben werden. Bei Datenbankoperationen wie MySQL-Abfragen kann dies besonders nützlich sein, um sicherzustellen, dass alle Ergebnisse erhalten werden, bevor fortgefahren wird.

Herausforderung: Asynchrone Abfragen

Beachten Sie den folgenden Code Snippet, das versucht, mehrere Datenbankergebnisse abzurufen und an eine Zeichenfolge anzuhängen:

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;
});

In diesem Code wird jede Abfrage ausgeführt asynchron, was zu undefiniertem Verhalten für die Variable appended_text führt. Um dieses Problem zu lösen, führt Node.js 8 eine leistungsstarke Funktion ein.

Lösung: Versprechen mit Async/Await

Um die Abfragen mit async/await zu synchronisieren, können Sie Nutzen Sie die native Funktion util.promisify() in Verbindung mit dem Node-MySQL-Modul. Hier ist ein Beispiel:

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();
  }
})();

In diesem Code:

  1. Sie versprechen zunächst, dass die Abfragemethode der Verbindung ein Versprechen zurückgibt.
  2. Innerhalb der asynchronen Funktion können Sie Führen Sie Ihre Abfragen nacheinander aus und warten Sie auf deren Ergebnisse.
  3. Schließlich können Sie die Ergebnisse an die Variable appended_text in a anhängen synchronisierte Weise.

Die Verwendung von async/await mit Node MySQL vereinfacht die Synchronisierung von Datenbankabfragen und ermöglicht so einen besser lesbaren und wartbaren Code.

Das obige ist der detaillierte Inhalt vonWie synchronisiere ich MySQL-Abfragen mit Async/Await in Node.js?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn