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 ?
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!