Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để trả lại lệnh gọi lại của truy vấn MySQL và đẩy đến một mảng trong Node.js?

Phương thức getWord của bạn là không đồng bộ !

Vì vậy, console.log(wordList); thứ hai được in trước khi trả về bất kỳ kết quả nào (trước cả khi bạn gọi wordList.push(result); lần đầu tiên)

Cũng vì bạn truy vấn db (không đồng bộ) trong getParrotMessage bạn cần sử dụng hàm callback (hoặc Promise hoặc bất kỳ thứ gì khác có thể được sử dụng) thay vì câu lệnh return.

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

bây giờ sử dụng nó như thế này

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 tạo bảng với nhiều khóa ngoại khi xóa bộ null

  2. Làm cách nào để xóa màn hình trong bảng điều khiển MySQL?

  3. Cách tốt nhất để xác thực XML dựa trên Lược đồ XML, phân tích cú pháp nó và lưu trữ dữ liệu trở lại Cơ sở dữ liệu MySQL bằng Perl là gì?

  4. ĐẶT HÀNG THEO điều kiện

  5. Cách dễ nhất để thêm nhiều không gian vào một chuỗi trong MySQL - SPACE ()