Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Panggilan Database Asinkron Node JS

Anda mengembalikan result dan menutup koneksi sebelum kueri mengembalikan nilainya dari db. Tempatkan kode itu di dalam panggilan balik.

Memperbaiki kode Anda, seharusnya terlihat seperti ini:

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

Meskipun, ini hanya akan menyelesaikan sebagian masalah, karena sekarang Anda masih memanggil response.end(callDatabase(id)); sebelum menunggu tanggapan dari kueri.

Untuk memperbaikinya, Anda perlu mengembalikan semacam panggilan balik.

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

Sekarang Anda dapat menyebutnya seperti ini :

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. hindari Mengurutkan berdasarkan MYSQL IN Kata Kunci

  2. Cara Memigrasikan MySQL dari Amazon EC2 ke Pusat Data Lokal Anda Tanpa Waktu Henti

  3. MySQL MENGOPTIMALKAN semua tabel?

  4. MySQL CASE...WHERE...THEN pernyataan

  5. Cara menghapus catatan MySQL setelah waktu tertentu