Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

नोड जेएस अतुल्यकालिक डेटाबेस कॉल

आप result लौटा रहे हैं और क्वेरी से पहले कनेक्शन बंद करने से डीबी से इसका मूल्य वापस आ गया है। उस कोड को कॉलबैक के अंदर रखें।

अपना कोड ठीक करते हुए, यह इस तरह दिखना चाहिए:

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. गलत वर्तनी वाले शहर के नामों के लिए निकटतम मिलान खोजें?

  2. एकाधिक डेटाबेस पर संग्रहीत प्रक्रिया स्थापित करें

  3. PHP:स्टार रेटिंग सिस्टम अवधारणा?

  4. एक MySQL डेटाबेस में एक PHP सरणी की सामग्री संग्रहीत करना

  5. स्प्रिंग बूट जेपीए MySQL:उपयुक्त ड्राइवर वर्ग निर्धारित करने में विफल