node.js中的函数

Function in node.js

本文关键字:函数 js node      更新时间:2023-12-13

在我的节点应用程序中,我使用的是函数。但我得到了这个函数的结果:

我的代码:

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

问题是结果是在回调中传递的(即异步),但您正在同步调用方法并打印结果,因此在您尝试打印结果时,结果实际上还没有返回。