Heim >Datenbank >MySQL-Tutorial >Wie können Async/Await und util.promisify() serielle MySQL-Abfrageprobleme in Node.js lösen?

Wie können Async/Await und util.promisify() serielle MySQL-Abfrageprobleme in Node.js lösen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-03 08:22:14558Durchsuche

How Can Async/Await and util.promisify() Solve Serial MySQL Query Issues in Node.js?

Asynchron/Warten mit MySQL in Node.js

In Node.js kann die Verwaltung asynchroner Vorgänge wie Datenbankaufrufe schwierig sein. Ein Ansatz besteht darin, die von C# inspirierte async/await-Syntax zu verwenden. Allerdings mag diese Syntax für Node.js-Neulinge ungewohnt erscheinen.

Verwendung von Async/Warten auf synchronisierte MySQL-Ergebnisse

Der bereitgestellte Code zeigt eine Situation, in der vier MySQL-Abfragen erforderlich sind seriell ausgeführt werden und ihre Ergebnisse an eine einzelne Zeichenfolge angehängt werden. Da der Code jedoch synchron ausgeführt wird, bleiben die Variablen string1 bis string4 leer, wenn die endgültige Zeichenfolge angehängt wird.

Um dieses Problem zu beheben, wurde in Node.js Version 8 util.promisify() eingeführt, das die Verwendung von Versprechen mit ermöglicht native Node.js-Module wie MySQL. So können Sie Ihr gewünschtes Verhalten mit async/await und util.promisify() erreichen:

const mysql = require('mysql');
const util = require('util');

const conn = mysql.createConnection({
  // your database connection parameters
});

// promisify the query method
const query = util.promisify(conn.query).bind(conn);

(async () => {
  try {
    // execute the queries asynchronously
    const [rows1, rows2, rows3, rows4] = await Promise.all([
      query('query1'),
      query('query2'),
      query('query3'),
      query('query4'),
    ]);

    // append the results to a single string
    const appendedText = rows1 + rows2 + rows3 + rows4;

    // do something with the appended text

  } catch (err) {
    // handle any errors
  } finally {
    // close the database connection
    conn.end();
  }
})();

Dieser überarbeitete Code verwendet async/await, um die Abfragen parallel auszuführen und sicherzustellen, dass die Ergebnisse synchron abgerufen werden. und speichert sie in einem Array. Das Array wird dann verwendet, um die Ergebnisse in der gewünschten Zeichenfolge zu verketten.

Das obige ist der detaillierte Inhalt vonWie können Async/Await und util.promisify() serielle MySQL-Abfrageprobleme in Node.js lösen?. 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