2016-07-05 56 views
0

我试图在连接查询中声明一个变量来使其工作。在MySQL查询中声明全局变量nodejs

var chk = cont.query("SELECT * FROM `points` WHERE name = '"+ usr +"'", function(rows) { 
    var row = rows; 
    res.send(row); 
}); 

console.log(row[0].amount); 

它返回此错误:ReferenceError: row is not defined

我怎样才能成功做到这一点。

+0

如果你在函数内部声明变量,不要指望它在console.log()调用的外部是可见的...... –

+0

有没有办法让它从函数中取出? – swagster

回答

0
var chk = cont.query("SELECT * FROM `points` WHERE name = '"+ usr +"'", function(rows) { 
    var row = rows; 
    console.log(row[0].amount) 
    res.send(row); 
}); 

您不能在声明函数外部访问row变量。即使全局声明row(在回调之外),它也不会工作,因为您发布的代码是异步执行的。查询回调函数在您的代码中执行console.log(row[0].amount);后执行,因此无论如何您都不会有行参考。

显然,如果您发布的代码片段是您的完整代码,则根本不需要声明row变量。

+0

因此,有没有可能的方式让这个查询之外? – swagster

+0

我不确定你想做什么,如果你想在其他地方引用行,你将不得不使用自己的回调并在那里传递行,在上面实现Promise,它返回行并在实际上进一步处理它有数据或看看异步模块,它处理进一步的逻辑取决于回调结果的情况 – razakj

+0

我想使用该查询之外的行数据。 – swagster