Heim >Datenbank >MySQL-Tutorial >Wie synchronisiere ich MySQL-Abfragen mit 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:
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!