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

Como faço para retornar o retorno de chamada da consulta do MySQL e enviar para uma matriz no Node.js?


Seu método getWord é assíncrono !

Então o segundo console.log(wordList); é impresso antes de qualquer resultado ser retornado (antes mesmo de você chamar wordList.push(result); pela primeira vez)

Além disso, como você consulta db (que é assíncrono) em getParrotMessage você precisa usar callback (ou Promise ou qualquer outra coisa que possa ser usada) em vez da instrução return.
function getParrotMessage(callback) {

    getWord('result', function (err, result) {

        if(err || !result.length) return callback('error or no results');
        // since result is array of objects [{word: 'someword'},{word: 'someword2'}] let's remap it
        result = result.map(obj => obj.word);
        // result should now look like ['someword','someword2']
        // return it
        callback(null, result);

    });
}

function getWord(word, callback) {
    con.query('SELECT * FROM word_table', function(err, rows) {
        if(err) return callback(err);
        callback(null, rows);
    });
};

agora use assim
getParrotMessage(function(err, words){
    // words => ['someword','someword2']

});