sql >> Database >  >> RDS >> Mysql

Hoe retourneer ik callback van MySQL-query en push naar een array in Node.js?

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']

});



  1. Postgresql verbinden met sqlalchemy

  2. mysql join-tabel op zichzelf

  3. SQL - Zoekopdracht om te zien of een tekenreeks een deel van de waarde in Kolom bevat

  4. PostgreSQL traceren met perf