Maison > Article > base de données > Comment gérer efficacement les valeurs de retour MySQL dans Node.js à l'aide de promesses ?
Utilisation de promesses pour gérer les valeurs de retour MySQL dans Node.js
Dans ce paradigme de programmation asynchrone, la gestion des valeurs de retour MySQL nécessite une approche différente de celle à des langages comme Python. Cet article se concentre sur la façon de restructurer le code à l'aide de promesses pour traiter efficacement les résultats MySQL.
Considérez l'exemple suivant :
<code class="javascript">function getLastRecord(name) { var connection = getMySQL_connection(); var query_str = "SELECT name, " + "FROM records " + "WHERE (name = ?) " + "LIMIT 1 "; var query_var = [name]; connection.query(query_str, query_var, function (err, rows, fields) { //if (err) throw err; if (err) { //throw err; console.log(err); logger.info(err); } else { //console.log(rows); return rows; } }); //var query = connection.query(query_str, function (err, rows, fields) { } var rows = getLastRecord('name_record'); console.log(rows);</code>
Ce code rencontre des difficultés en raison de la nature asynchrone de Node.js. Pour résoudre ce problème, nous pouvons adopter une solution basée sur des promesses :
<code class="javascript">function getLastRecord(name) { return new Promise(function (resolve, reject) { // The Promise constructor should catch any errors thrown on // this tick. Alternately, try/catch and reject(err) on catch. var connection = getMySQL_connection(); var query_str = "SELECT name, " + "FROM records " + "WHERE (name = ?) " + "LIMIT 1 "; var query_var = [name]; connection.query(query_str, query_var, function (err, rows, fields) { // Call reject on error states, // call resolve with results if (err) { return reject(err); } resolve(rows); }); }); }</code>
Maintenant, nous pouvons traiter la valeur de retour à l'aide d'un bloc then/catch :
<code class="javascript">getLastRecord('name_record').then(function (rows) { // now you have your rows, you can see if there are <20 of them }).catch((err) => setImmediate(() => { throw err; })); // Throw async to escape the promise chain</code>
En adoptant les promesses , nous pouvons gérer les valeurs de retour MySQL plus efficacement dans Node.js, en profitant de ses capacités asynchrones tout en conservant la lisibilité.
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!