Вашият метод getWord е асинхронен !
Така че вторият console.log(wordList);
се отпечатва преди да бъдат върнати каквито и да било резултати (преди дори да извикате wordList.push(result);
за първи път)
Освен това, тъй като правите заявка db (която е асинхронна) в getParrotMessage функция трябва да използвате обратно извикване (или Promise или каквото и да е друго, което може да се използва) вместо израз за връщане.
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);
});
};
сега го използвайте по този начин
getParrotMessage(function(err, words){
// words => ['someword','someword2']
});