Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie gebe ich den Rückruf der MySQL-Abfrage zurück und drücke ihn in ein Array in Node.js?

Ihre Methode getWord ist asynchron !

Also die zweite console.log(wordList); wird ausgegeben, bevor Ergebnisse zurückgegeben werden (bevor Sie wordList.push(result); überhaupt aufrufen zum ersten Mal)

Auch da Sie db (was asynchron ist) in getParrotMessage abfragen Funktion müssen Sie callback (oder Promise oder was auch immer verwendet werden kann) anstelle der return-Anweisung verwenden.

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);
    });
};

Verwenden Sie es jetzt so

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

});