2012-12-02 61 views
0

這裏是我的代碼,我不能達到MySQL數據:當我渲染

app.get('/index/:name',function(req, res){ 
    connection.query('SELECT * FROM deneme',function(err, rows, fields){ 
     if (err) throw err; 
     var paragraf = rows; 
    }); 

    res.render('index', { 
     title: req.params.name, 
     para: paragraf 
    }); 
}); 

但節點不能「paragraf」變量從「res.render」內到達。節點返回

ReferenceError: paragraf is not defined

如何從異步函數外部到達paragraf變量?

回答

0

這不是應該如何使用異步方法的結果,因爲直到查詢回調被調用之前,這些行將不可用。

嘗試,而不是:您訪問並呈現結果(行),一旦他們獲得

app.get('/index/:name', function(req, res){ 
    connection.query('SELECT * FROM deneme', function(err, rows, fields){ 
     ... 

     res.render('index', { 
      title: req.params.name, 
      para: rows 
     }); 
    }); 
}); 

這樣。

+0

上面的代碼只是示例,我正在查詢另外兩個sql查詢。這是'只有一個'查詢的方式。 – user1870012

+0

如果您正在製作多個查詢並想渲染某種最終結果,則應該鏈接您的回調函數。您也可以使用async(https://github.com/caolan/async)等庫來幫助您完成此任務。請記住,節點遵循異步模型,當您調用「查詢」時,代碼將繼續執行下一行代碼(調用「res.render」),它不會等待結果,這就是爲什麼您需要傳遞迴調到查詢功能。 –

+0

我不能定義爲全球? – user1870012