Javascript 如何返回MySQL查询的回调并推送到Node.js中的数组?

Javascript 如何返回MySQL查询的回调并推送到Node.js中的数组?,javascript,mysql,node.js,callback,Javascript,Mysql,Node.js,Callback,我试图在一个表上使用MYSQL查询填充一个数组,该表获取所有行并将行推送到WordList 我可以很好地打印该方法中的每一行,但当我超出该方法的范围时,它不会将任何内容推送到Wordlist function getParrotMessage() { wordList = []; console.log(wordList); // Implementation getWord('result', function (err, result) {

我试图在一个表上使用MYSQL查询填充一个数组,该表获取所有行并将行推送到WordList

我可以很好地打印该方法中的每一行,但当我超出该方法的范围时,它不会将任何内容推送到Wordlist

function getParrotMessage() {

    wordList = [];

    console.log(wordList);

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

        console.log(result); // works, prints the row data in MySQL table
        wordList.push(result); // doesn't work

    });

    console.log(wordList);
    return parrot_message;
}

// Method
function getWord(word, callback) {
    var query = con.query('SELECT * FROM word_table');
    query.on('result', function (row) {
        callback(null, row.word);
    });
};
词表:[]

wordlist显示为空数组


任何帮助都将不胜感激,只要从javascript和node.js开始,您的方法getWord就是异步的

所以第二个
console.log(wordList)wordList.push(结果);
之前)打印code>

另外,由于在getParrotMessage函数中查询db(异步),所以需要使用回调(或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']

});

您的方法
getWord
是异步的!所以第二个
console.log(wordList)是在返回任何结果之前打印的(甚至在您第一次调用
wordList.push(result);
之前),因此我如何实际检索结果数据,以便对其进行操作和执行其他各种操作。我不需要打印它。