GameStatus
という名前のMeteorコレクションがあるとします。私はさまざまな役割を持つユーザーを持っていますが、すべてのユーザー用にGameStatusコレクションを公開しています。私は単に役割(「S」と「B」)私は、次のテンプレートヘルパーを使用して問題がないの2のために、サーバに次/ publications.coffeeMeteor findOneクエリは、1つのテンプレートヘルパーで未定義を返します。他のテンプレートヘルパーでは、同じクエリがうまく機能します
Meteor.publish 'gamestatus', ->
GameStatus.find()
を使用します(ファイルで定義されてクライアント/ビュー/ seller.coffeeとクライアント/ビュー/ buyer.coffee)これらについては
currentRound: ->
return GameStatus.findOne().currentRound
私は次のエラーを取得することはありません。 (ファイルクライアント/ビュー/ admin.coffeeで定義された)同じテンプレートヘルパーを使用して
Uncaught TypeError: Cannot read property 'currentRound' of undefined
しかし、別の役割(「管理者」)のための
は、上記のショー捕捉されない例外TypeErrorを与えます。代わりに次のように書くと機能します。currentRound: ->
return GameStatus.findOne()?.currentRound
これはなぜ機能するのですか。私は、コレクションが最初にページが読み込まれているときに利用できないと考えています。しかし、なぜこれは上記の他のテンプレートでも起こりませんか?
誰かがこれを明確にすることができれば本当に感謝します。
コールバックでは、コンソールに何かを記録して、いつ利用可能かを知って、失敗した呼び出しで同じことをします。あなたの仮説をテストすることができます。 –
@MrD私に例を教えてもらえますか?サブスクリプションがいつ利用可能になったかを私が知るのを助けるでしょう。この特定の役割のためだけに彼らが最初に利用可能ではないようだ。 – Curious2learn
https://gist.github.com/devonbarrett/b698c10cc427ee2c1811を購読して、このようなことをして、currentRound関数と同様のものをログに記録し、コレクションの準備が完了する前に消滅するかどうかを確認してください。 –