如何从函数传递变量??
这是我的功能,我做了查询并成功获得了结果
我还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
});
答案 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
}
};
});
希望这有帮助! (对于缩进感到抱歉)