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

Извиквания на асинхронна база данни на Node JS

Връщате result и затваряне на връзката, преди заявката да е върнала стойността си от db. Поставете този код в обратното извикване.

Поправяйки кода си, той трябва да изглежда така:

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

Въпреки това, това ще реши само част от проблема, тъй като сега все още извиквате response.end(callDatabase(id)); преди да изчакате отговор от заявката.

За да поправите това, трябва да върнете някакъв вид обратно извикване.

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

Сега можете да го наречете така:

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. Не мога да се свържа с отдалечена база данни с помощта на php

  2. Производителност на MySQL:множество таблици спрямо индекс на една таблица и дялове

  3. Как да намекна индекса за използване в заявка за избор на MySQL?

  4. Как да създадете MySQL база данни в cPanel

  5. Как да напиша защитена SELECT заявка, която има променлив брой стойности, предоставени от потребителя с mysqli?