2012-02-25 154 views
2

我有一個問題,我希望你能幫忙。基本上,我正在對MongoDB集合進行查詢,並嘗試將結果傳遞迴玉視圖。在ExpressJS中將MongoDB數據傳遞給Jade視圖

app.helpers({ 
    clients: function(){ 
    users.find({uid:req.session.uid}).toArray(function(err, post){ 
     if(err){ 
     console.log(err); 
     }else{ 
     return post; 
     } 
    }); 
    } 
}); 

這是我的觀點

p #{clients} 

引用輔助對象,現在我剛開始的翻譯:在視圖中的價值。如果我記錄結果,我會得到預期的文檔結果,但如果我嘗試將它推入數組或var,我會得到[object Object]結果。有任何想法嗎?

回答

1

這是行不通的,因爲你用以下結構:

clients: function() { 
    (some code)(function() { 
     return variable; 
    }); 
} 

內部函數return variable;語句返回。但是你需要返回外部函數的變量。那麼如何做到這一點?其實你不能。您應該在視圖中執行查詢並將結果存儲在請求中,然後將請求變量傳遞給模板。你不能在助手中使用異步函數。

另一件事是,當你在一個輔助使用功能,然後在模板中,你應該使用

p #{ clients() } 

,因爲它是一個函數。儘管如此,它在這種情況下不起作用。

+0

我實際上已經從助手中取出了它,並將它放回視圖調用中,但我似乎無法讓它繼續工作。如何將mongodb查詢的結果分配給var或數組並傳入我的視圖? – chaddy81 2012-02-25 15:48:53

+0

我最終只是將它粘在session var中,因爲我將訪問多個地方的數據,這似乎工作正常。謝謝你的幫助。 – chaddy81 2012-02-25 17:06:01

+1

@ChadBartels你正在渲染視圖的時刻。如果你有變量'clients',那麼你運行'res.render('view_name.jade',{clients_label:client})',你可以在模板中像這樣使用'#{clients_label}'。祝你好運! – freakish 2012-02-26 10:35:01

相關問題