Uw methode getWord is asynchroon !
Dus de tweede console.log(wordList);
wordt afgedrukt voordat resultaten worden geretourneerd (voordat u zelfs maar wordList.push(result);
aanroept voor de eerste keer)
Ook omdat u db (die asynchroon is) opvraagt in getParrotMessage functie die je nodig hebt om callback (of Promise of wat dan ook is dat kan worden gebruikt) te gebruiken in plaats van een return-statement.
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);
});
};
gebruik het nu zo
getParrotMessage(function(err, words){
// words => ['someword','someword2']
});