Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да върна обратно извикване на MySQL заявка и да насоча към масив в Node.js?

Вашият метод 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']

});



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. `Идентифицирано с парола` в Създаване на база данни MySQL

  2. Какъв е еквивалентът на SQL Server на ELT() в MySQL?

  3. Как избирате всеки n-ти ред от mysql

  4. Laravel Query Builder - Разширени условни клаузи (по избор)

  5. Как да записвам и извличам изображение на моя сървър в java webapp