Maison >base de données >tutoriel mysql >Comment convertir des opérations MySQL asynchrones en promesses dans 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!