Maison >base de données >tutoriel mysql >Comment synchroniser les requêtes MySQL avec Async/Await dans Node.js ?
Synchronisation des requêtes MySQL avec Async/Await dans Node.js
Dans Node.js, les mots-clés async/await permettent au code asynchrone de être écrit de manière synchrone. Pour les opérations de base de données, telles que les requêtes MySQL, cela peut être particulièrement utile pour garantir que tous les résultats sont obtenus avant de continuer.
Défi : requêtes asynchrones
Considérez le code suivant extrait de code, qui tente de récupérer plusieurs résultats de base de données et de les ajouter à une chaîne :
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; });
Dans ce code, chaque requête est exécutée de manière asynchrone, conduisant à un comportement indéfini pour la variable appended_text. Pour résoudre ce problème, Node.js 8 introduit une fonctionnalité puissante.
Solution : Promesse avec Async/Await
Pour synchroniser les requêtes à l'aide de async/await, vous pouvez exploitez la fonction native util.promisify() en conjonction avec le module mysql du nœud. Voici un exemple :
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(); } })();
Dans ce code :
L'utilisation de async/await avec le nœud mysql simplifie la synchronisation des requêtes de base de données, permettant un code plus lisible et maintenable.
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!