簡體   English   中英

node.js中的函數

[英]Function in node.js

在我的節點應用程序中我正在使用function.But我得到該函數的結果:

我的代碼:

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結果。但是它的打印“未定義”..我是這個node.js的新手。所以請幫我解決這個問題。謝謝提前..

最有可能的問題是函數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);
    });
}

問題是結果是在回調中傳遞的(即異步),但是您同步調用該方法並打印結果 - 因此在您嘗試打印時實際上並未返回結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM