2013-11-28 73 views
0

在我節點應用我使用function.But我得到的是函數的結果:功能在node.js中

我的代碼:

var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'xxxx', 
    password : 'xxxxx', 
    database : 'xxxxxxx', 
    debug : true, 
}) 
connection.connect(function(err) { 
    if (!err) { 
     console.log("Connected to MySQL"); 
    } else if (err) { 
     console.log(err); 
    } 
}); 

if(level5 == undefined) 
{ 
    var result1=querylevel5(); 
    console.log("vvvvvvvvv="+result1) 
    res.writeHead(200, { 'Content-Type': 'application/json'}); 
    res.end(JSON.stringify(result1,null,"\n")); 
} 

我的功能:

function querylevel5() 
    { 
     var result;  
     connection.query("select * from levels ", function(err, row1, fields) { 
     result= row1; 
     /*res.writeHead(200, { 'Content-Type': 'application/json'}); 
     res.end(JSON.stringify(row1,null,"\n"));*/ 
     }); 
     return result; 
    } 

我想獲取row1的結果,在我的調用函數..但其打印「undefined」..我是新的這個node.js..So請幫我解決這個問題..預先感謝..

+0

你的問題不是很清楚。此外,我不知道我們應該如何幫助你,而不知道「連接」是什麼。 – Brad

+0

K等待我將更新我的問題.. – Subburaj

+0

我的猜測:'connection.query'是例如'node-mysql'或其他sql模塊。所以最有可能的是一個異步調用,所以回調函數不會在你返回結果的時候被調用;' –

回答

2

最有可能的問題是函數querylevel5result之前立即返回。你要做像大多數其他的Node.js框架也不一樣,例如connection.query功能,即使用回調:

if(level5 == undefined) { 
    querylevel5(function(result) { 
     console.log("vvvvvvvvv="+result) 
     res.writeHead(200, { 'Content-Type': 'application/json'}); 
     res.end(JSON.stringify(result,null,"\n")); 
    }); 
} 

而且

function querylevel5(callback) { 
    connection.query("select * from levels ", function(err, row1, fields) { 
     callback(row1); 
    }); 
} 
+0

感謝@Joachim Pileborg爲您的寶貴時間..它的工作.. – Subburaj

0

問題是結果在回調中傳遞(即異步),但是您正在同步調用方法並打印結果 - 所以在您嘗試打印結果時實際上沒有返回結果。

+0

我該怎麼做..請幫助我.. – Subburaj