Maison >base de données >tutoriel mysql >Comment Async/Await et util.promisify() peuvent-ils résoudre les problèmes de requêtes MySQL en série dans Node.js ?

Comment Async/Await et util.promisify() peuvent-ils résoudre les problèmes de requêtes MySQL en série dans Node.js ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-03 08:22:14621parcourir

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

Async/Await avec MySQL dans Node.js

Dans Node.js, les opérations asynchrones telles que les appels de base de données peuvent être difficiles à gérer. Une approche consiste à utiliser la syntaxe async/await, inspirée de C#. Cependant, cette syntaxe peut sembler peu familière aux débutants de Node.js.

Utilisation d'Async/Await pour des résultats MySQL synchronisés

Le code fourni illustre une situation dans laquelle quatre requêtes MySQL ont besoin à exécuter en série et leurs résultats ajoutés à une seule chaîne. Cependant, comme le code s'exécute de manière synchrone, les variables string1 à string4 restent vides lorsque la chaîne finale est ajoutée.

Pour résoudre ce problème, la version 8 de Node.js a introduit util.promisify() qui permet l'utilisation de promesses avec modules natifs Node.js comme MySQL. Voici comment obtenir le comportement souhaité en utilisant async/await et util.promisify() :

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

Ce code révisé utilise async/await pour exécuter les requêtes en parallèle, garantissant que les résultats sont récupérés de manière synchrone, et les stocke dans un tableau. Le tableau est ensuite utilisé pour concaténer les résultats dans la chaîne souhaitée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn