Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter um valor da consulta mysql fora da instrução de consulta?


tl;dr tudo acontece em um retorno de chamada.

Você está tropeçando na natureza assíncrona do Javascript. No momento em que seu console.log(value); chamada é executada, a consulta não é (necessariamente) concluída. Portanto, não há como o resultado da consulta estar disponível naquele momento.

Muitos desenvolvedores usam um padrão como esse, com uma função de retorno de chamada para lidar com a próxima etapa quando o resultado da consulta chegar.
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 objetos tornam esse tipo de coisa mais fácil de ler em node.js. Mas explicá-los está além do escopo de uma resposta do Stack Overflow de qualquer maneira.