1

ユーザー アカウントがないサービスを作成しており、アクセスしているページを制限したいと考えています。

したがって、各ページは「ボックス」であり、各「ボックス」にはたくさんの「ファイル」があります。

関連情報を server/publications.coffee に公開しました

Meteor.publish 'files', (boxId)->
  console.log boxId
  return Files.find({boxId:boxId})

「box」のファイルにはサブスクリプション ハンドルがあります。

@filesHandle = Meteor.subscribe 'files', Session.get('currentBoxId')

また、currentBoxId はセッション変数に格納されます。

これがクレイジーな部分です。これが機能することを期待しており、サーバーを初めて起動したときに機能します。コードの最初のビットの console.log は、適切な ID を出力します。その後、突然、コンソール ログが突然「null」を返し始めます。ブラウザ コンソールでセッション変数を console.log しても、正しく返されます。

ここにはある種の読み込み非同期の問題があるように感じますが、何が起こっているのかわかりません。

手がかりはありますか?

4

1 に答える 1

0

あ、わかった。どうやら、セッション変数が設定される前に、テンプレートをレンダリングできます。通常、アプリケーション スコープの main.js ファイルにコレクション ハンドルを配置しますが、サブスクリプションがセッション変数に依存している場合、これは機能しません。

私は次のことをしました:

Template.boxPage.created = ()->
  @filesHandle = Meteor.subscribe 'files', Session.get('currentBoxId')
于 2013-10-06T05:02:29.213 に答える