Maison  >  Article  >  base de données  >  Comment convertir des opérations MySQL asynchrones en promesses dans Node.js ?

Comment convertir des opérations MySQL asynchrones en promesses dans Node.js ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-25 17:28:02828parcourir

How to Convert Asynchronous MySQL Operations to Promises in Node.js?

Conversion des opérations MySQL asynchrones en promesses dans Node.js

La nature asynchrone de Node.js pose un défi pour les développeurs venant de Python. Pour résoudre ce problème, cet extrait de code tente d'encapsuler une opération MySQL dans une fonction asynchrone qui renvoie une valeur. Cependant, cette approche ne fonctionnera pas en raison de la nature asynchrone de Node.js.

Pour résoudre ce problème, l'opération doit être refactorisée pour renvoyer une promesse. En utilisant Bluebird, cela peut être réalisé comme suit :

<code class="javascript">function getLastRecord(name) {
  return new Promise((resolve, reject) => {
    // Establish a connection to MySQL
    const connection = getMySQL_connection();

    // Construct and execute the MySQL query
    const query_str = `SELECT name, FROM records WHERE (name = ?) LIMIT 1`;
    const query_var = [name];
    connection.query(query_str, query_var, (err, rows, fields) => {
      if (err) {
        return reject(err);
      }
      resolve(rows);
    });
  });
}</code>

Maintenant, vous pouvez gérer les lignes renvoyées comme vous le souhaitez :

<code class="javascript">getLastRecord('name_record').then((rows) => {
  // Access the rows and perform operations

  if (rows.length > 20) {
    console.log("action");
  }
}).catch((err) => {
  // Handle any errors
  setImmediate(() => { throw err; });
});</code>

Cette approche garantit que l'opération est exécutée de manière asynchrone, tandis que vous permettant de gérer la valeur renvoyée de manière synchrone à l'aide de promesses.

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