7

という Meteor コレクションがあるとしGameStatusます。さまざまな役割を持つユーザーがいますが、すべてのユーザーの GameStatus コレクションを公開しています。server/publications.coffee で次を使用するだけです

Meteor.publish 'gamestatus', ->
    GameStatus.find()

ロールのうちの 2 つ (「S」と「B」) については、次のテンプレート ヘルパー (ファイルclient/views/seller.coffeeclient/views/buyer.coffeeで定義)を使用しても問題ありません。

currentRound: ->
    return GameStatus.findOne().currentRound

これらの場合、次のエラーは発生しません。

Uncaught TypeError: Cannot read property 'currentRound' of undefined 

しかし、別の役割 (「管理者」) の場合、同じテンプレート ヘルパー (ファイルclient/views/admin.coffeeで定義) を使用すると、上記のショー Uncaught TypeError が表示されます。代わりに次のように書くとうまくいきます:

currentRound: ->
    return GameStatus.findOne()?.currentRound

なぜこれが機能するのか、私はある程度理解しています。コレクションは、ページが読み込まれているときに最初は利用できず、その後利用可能になると思います。しかし、上記の他のテンプレートでこれが起こらないのはなぜでしょうか?

誰かがこれを明確にするのを助けることができれば本当に感謝しています.

4

1 に答える 1