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

Lệnh gọi cơ sở dữ liệu không đồng bộ Node JS

Bạn đang trả về result và đóng kết nối trước khi truy vấn trả về giá trị của nó từ db. Đặt mã đó bên trong lệnh gọi lại.

Đang sửa mã của bạn, nó sẽ trông như thế này:

function callDatabase(id) {
    var result;
    var connection = mysql.createConnection(
        {
            host        :   '192.168.1.14',
            user        :   'root',
            password    :   '',
            database    :   'test'
        }
    );

    connection.connect();
    var queryString = 'SELECT name FROM test WHERE id = 1';

    connection.query(queryString, function(err, rows, fields) {
        if (err) throw err;

        for (var i in rows) {
            result = rows[i].name;
        }

        connection.end();
        return result;
    });
}

Mặc dù, điều này sẽ chỉ giải quyết một phần của vấn đề, vì bây giờ bạn vẫn đang gọi response.end(callDatabase(id)); trước khi đợi phản hồi từ truy vấn.

Để khắc phục điều này, bạn cần trả lại một số loại gọi lại.

function callDatabase(id, callback) {
    // the method code here...
    connection.query(queryString, function(err, rows, fields) {
        // code...

        // instead of returning the result, invoke the callback!
        callback(rows);
    });
}

Bây giờ bạn có thể gọi nó như thế này:

request.on('data', function (chunk) {
    var json = JSON.parse(chunk);
    var id = parseInt(json["id"]);
    callDatabase(id, function(res) {
        response.end(res);
    });
});



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ướp muối băm của tôi với PHP và MySQL

  2. xóa * khỏi bảng không hoạt động

  3. Mô hình Laravel với POINT / POLYGON, v.v. sử dụng biểu thức DB ::raw

  4. Sử dụng lớp cơ sở dữ liệu PDO mà không cần tạo kết nối mới mỗi lần?

  5. Dự phòng &Dự phòng trên Amazon RDS