在nodejs中返回函数变量

时间:2016-02-23 07:31:06

标签: node.js function variables

如何从函数传递变量??

这是我的功能,我做了查询并成功获得了结果 我还x=1确认了console.log(x),所以我确定已设置x

 function checktype(x){

     (Do something)

      var x = rows[0].type;  // [ RowDataPacket { type: 2 } ]
      return x; //x=2

};

这是API部分。我在这里使用函数checktype()但是我无法获得返回的值。我也尝试只运行checktype(a);,但我也无法得到结果/ x。

 router.post("/check",function(req,res){
    var a = req.body.a;
    var result = checktype(a);

    console.log(result); //undefined 

 });

1 个答案:

答案 0 :(得分:1)

从您的示例中我读到了从MySQL数据库中检索的数据。这是一个异步操作,因此您必须添加回调或承诺。

因此,当您确定您的函数正在运行同步代码时,您可以安全地使用'return x',否则节点将继续使用'var x ='

之后的代码

请注意,使功能同步通常不利于性能。

所以对于这个函数,添加一个回调:

function checktype(x, callback){
    mysql.query(query, function (error, rows, fields) {
        if (error) {
            callback(error,0);
        } else {
           var x = rows[0].type;  // [ RowDataPacket { type: 2 } ]
           callback(0,x);
        }
    });
};    

然后调用此函数并处理回调;

router.post("/check",function(req,res){
        var a = req.body.a;
        checktype(a, function(error, x){
            if (error){
                res.status(500).send({"message" : "internal server error"});
            }
             else{
            res.status(200).send(x);
            onsole.log(result); //undefined 
          }
        };
     });

希望这有帮助! (对于缩进感到抱歉)