假設我有一個名爲GameStatus
的Meteor集合。我有不同角色的用戶,但是我爲所有用戶發佈了GameStatus集合。我簡單地使用下面的服務器/ publications.coffee流星findOne查詢在一個模板助手中返回undefined。在其他模板助手中,同樣的查詢效果不錯
Meteor.publish 'gamestatus', ->
GameStatus.find()
對於兩個角色(「S」和「B」)我有,當我使用下面的模板助手沒有問題的(在文件中定義客戶機/意見/ seller.coffee和客戶端/視圖/ buyer.coffee)
currentRound: ->
return GameStatus.findOne().currentRound
對於這些我從來沒有碰到下面的錯誤。
Uncaught TypeError: Cannot read property 'currentRound' of undefined
但另一個角色(「管理」),使用相同的模板助手(文件客戶端/視圖/ admin.coffee定義)給出了上述節目遺漏的類型錯誤。它適用,如果我改爲寫:
currentRound: ->
return GameStatus.findOne()?.currentRound
我有點理解爲什麼這個工程。我認爲,當頁面被加載時,該集合首先不可用,然後它變爲可用。但爲什麼上面顯示的其他模板不會發生這種情況?
如果有人能幫助澄清這一點,我們將非常感激。
當您訂閱集合時,在回調日誌中將某些內容記錄到控制檯,以便您知道它何時可用,並對該調用執行相同的操作以使其失敗。這樣你可以測試你的假設。 –
@MDD你能舉個例子嗎?我應該記錄什麼來幫助我瞭解訂閱何時可用。看起來只是爲了這個特定的角色,他們最初是不可用的。 – Curious2learn
你想爲你的訂閱https://gist.github.com/devonbarrett/b698c10cc427ee2c1811做這樣的事情,然後記錄類似於currentRound函數的東西,看看它是否在集合準備就緒之前被解僱了 –