2016-07-05 54 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