2015-04-28 6 views
6

मैं नोड js में नया हूँ, अब मैं नोड js का उपयोग कर mysql में चुनिंदा क्वेरी की वापसी मान सेट करने के कोशिश कर रहा हूँ .... मैं नोड mysql उपयोग कर रहा हूँ पैकेज ...एक का चयन क्वेरी मूल्य वापस नहीं लौट सकते का उपयोग कर mysql और नोड js

उदाहरण कोड

var mysql = require('mysql'); 
var connection = mysql.createConnection({ 
    host : "localhost", 
    user : "root", 
    password: "root123", 
    database: "testdb" 
}); 

var retValue = undefined; 

var query = connection.query('SELECT * FROM tblData;'); 
query 
    .on('error', function(err) { 
     // Handle error, an 'end' event will be emitted after this as well 
    }) 
    .on('fields', function(fields) { 
     // the field packets for the rows to follow 
    }) 
    .on('result', function(row) { 
     // Pausing the connnection is useful if your processing involves I/O 
     connection.pause(); 
     processRow(row, function() { 
      retValue = row; 
     }); 
    }) 
    .on('end', function(row) { 

    }); 

    connection.end(); 

    function processRow(rows) 
    { 
     retValue = rows; 
    } 

    console.log(retValue); 

retValue हमेशा अनिर्धारित रहता है। मुझे पता है कि यह असीमित कॉल है। कोई मुझे बताता है कि इस चर के लिए मूल्य कैसे सेट करें।

धन्यवाद दीपक

+0

आप 'processVow' और उसकी कॉलबैक दोनों में 'retValue' असाइन क्यों करना चाहते हैं? – Lewis

+0

बस की कोशिश की .... लेकिन मैं उस चर के परिणाम निर्धारित नहीं कर सकते .... –

+0

http://stackoverflow.com/questions/5964988/how-to-get-the-results-from-nodejs-using -mysql-पैकेज संभव मदद – vanadium23

उत्तर

0

retvalue केवल दायरे में उपलब्ध होगा, कि परिणाम secion में अपने डाल दिया। तो आप अपने परिणाम लॉग इन करने के ऐसा ही कुछ कर सकते हैं:

var connection = mysql.createConnection({ 
    host : "localhost", 
    user : "root", 
    password: "root123", 
    database: "testdb" 
}); 

var retValue = undefined; 

var query = connection.query('SELECT * FROM tblData;', function(err, results, fields) { 
    console.log(results); 
    // Here continue logic you needed with results from table 
}); 
+0

मैं क्षेत्र से बाहर परिणाम नहीं मिल सकता है ... मैं आवंटित है और इस fucntion की तरह मान() getResults करना चाहते हैं {... ... वर retValue = अपरिभाषित; वर क्वेरी = connection.query ('tblData से चुनें *;', समारोह (अरे, परिणाम, क्षेत्रों) {retValue = परिणाम;}); वापसी retValue}; var ret = getResults(); console.log (सेवानिवृत्त); –

+0

@DeepakSamuel node.js स्कॉप्स और कॉलबैक मैनर में काम कर रहे हैं। यह उसकी प्रकृति है। क्या आप वाकई इस तरह से कोड को लागू करने की ज़रूरत है? आप वादे इंटरफ़ेस के माध्यम से वर्र्स सिंक करने का प्रयास कर सकते हैं। – vanadium23

+0

ओह ... ठीक है जानकारी के लिए धन्यवाद .... क्या आप prmoise का कोई उदाहरण डाल सकते हैं? –

0

function processRow(rows) अंदर console.log ले जाएँ, ताकि यह

function processRow(rows) 
{ 
    retValue = rows; 
    console.log(retValue); 
} 

की तरह दिखता है भी

processRow(row, function() { 
    retValue = row; 
}); 

करने के लिए
processRow(row); 
बदल

दूसरा पैरामीटर अप्रयुक्त था।

+0

मुझे परिणाम का दायरा नहीं मिल रहा है ... मैं इस फ्यूशन() getResults {... ... var retValue = अपरिभाषित मान को असाइन करना और वापस करना चाहता हूं; var query = connection.query ('चयन * tblData से;', फ़ंक्शन (त्रुटि, परिणाम, फ़ील्ड) {retValue = results;}); वापसी retValue}; var ret = getResults(); console.log (सेवानिवृत्त); –

+0

पैट्रिक काम नहीं कर रहा है .... कंसोल लॉग हमेशा परिणाम दिखाता है .... लेकिन मुझे फ़ंक्शन –

+0

@DeepakSamuel का नतीजा नहीं मिल सकता है, आप फ़ंक्शन से परिणाम नहीं प्राप्त कर सकते हैं। यही है कि एसिंक्रोनस कॉलबैक कैसे काम करते हैं। उन्हें निष्पादित किया जाता है _after_ बाहरी भाग को निष्पादित किया जाता है, यहां तक ​​कि फ़ंक्शन ब्लॉक के बाद भी बाहरी भाग। –

0

मैं क्षेत्र से बाहर परिणाम नहीं मिल सकता है ... मैं निर्दिष्ट करेंगे और (इस

fucntion की तरह मान) getResults { ... ... वर retValue = अपरिभाषित करना चाहते हैं;

वर क्वेरी = connection.query ('tblData से * का चयन करें;', समारोह (अरे, परिणाम, क्षेत्रों) { retValue = परिणाम; });

वापसी retValue};

वर सेवानिवृत्त = getResults(); console.log (ret);

+0

यह एक उत्तर नहीं है। –

1

चूंकि डेटाबेस क्वेरी एक असीमित अपरिवर्तन है, इसलिए आपके चर retValue को तब तक सेट नहीं किया गया है जब आप console.log(retValue) पर कॉल करते हैं।

var retValue; 

var query = connection.query('SELECT * FROM tblData;'); 
query 
    .on('error', function(err) { 
     // Handle error, an 'end' event will be emitted after this as well 
    }) 
    .on('fields', function(fields) { 
     // the field packets for the rows to follow 
    }) 
    .on('result', function(row) { 
     // Pausing the connnection is useful if your processing involves I/O 
     connection.pause(); 
     processRow(row); 
     console.log(retValue); //retValue is now set 
    }) 
    .on('end', function(row) { 

    }); 

    connection.end(); 

    function processRow(rows) 
    { 
     retValue = rows; 
    } 

    console.log(retValue); // undefined, retValue has not been set yet 
संबंधित मुद्दे