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

Como obter os resultados do nodejs usando o pacote mysql?


Como o node.js não é bloqueante e assíncrono, neste código:
client.query("SELECT * FROM users", function (error, results, fields) {
    if (error) {
        //
    }
    if (results.length  > 0) {
        self.users = results;
    }
});

console.log(this.users);

os dados do banco de dados provavelmente ainda não foram carregados na variável de usuários quando você está tentando registrá-los no console. Você pode conferir se fizer seu console.log operação dentro da consulta, por exemplo:
client.query("SELECT * FROM users", function (error, results, fields) {
    if (error) {
        //
    }
    if (results.length  > 0) {
        console.log(results);
    }
});

Para passar o resultado para uma variável quando a operação for concluída, você pode envolver sua chamada de banco de dados cliente em uma função com parâmetro de retorno de chamada e definir sua variável quando o retorno de chamada for invocado, por exemplo:
function query(sql, callback) {
    client.query(sql, function (error, results, fields) {
        if (error) {
            //
        }
        if (results.length  > 0) {
            callback(results);
        }
    });
}

query("SELECT * FROM users", function(results) {
    self.users = results;
    console.log(self.users);
});

O código acima é apenas um conceito.