Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment obtenir une valeur de la requête mysql en dehors de l'instruction de requête ?

tl;dr tout se passe dans un rappel.

Vous trébuchez sur la nature asynchrone de Javascript. Au moment où votre console.log(value); l'appel s'exécute, la requête n'est pas (nécessairement) terminée. Il est donc impossible que le résultat de la requête soit disponible à ce moment-là.

De nombreux développeurs utilisent un modèle comme celui-ci, avec une fonction de rappel pour gérer l'étape suivante lorsque le résultat de la requête arrive.

function quo (success){
    value = connection.query(
       'SELECT role from `roles` where `id` = 1' , 
       function (error, results, fields) {
           if (error) throw error;
           console.log('The role is: ', results[0].role);
           success (results[0].role);
       });
}

quo (function (role) {
   console.log(role);
   /* do something useful with the role that came back from the query */
});

Promise les objets rendent ce genre de chose plus facile à lire dans node.js. Mais les expliquer dépasse de toute façon la portée d'une réponse Stack Overflow.