sql >> Database teknologi >  >> RDS >> Mysql

Hvordan returnerer jeg tilbagekald af MySQL-forespørgsel og skubber til et array i Node.js?

Din metode getWord er asynkron !

Så den anden console.log(wordList); udskrives før nogen resultater returneres (før du overhovedet kalder wordList.push(result); for første gang)

Også da du forespørger db(som er asynkron) i getParrotMessage funktion skal du bruge callback (eller Promise eller hvad der ellers er, der kan bruges) i stedet for 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);
    });
};

brug det nu sådan her

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

});



  1. Flere INSERT-sætninger vs. enkelt INSERT med flere VALUES

  2. Sådan forbedres antallet af tekstforespørgsler til Django med Postgres

  3. Flask-Sqlalchemy Mangler BEGIN ser ud til at forårsage usynkroniserede sessioner

  4. MySql-legitimationsoplysninger