2016-09-21 22 views
0

クライアントの購読を停止する適切な方法があるかどうかは疑問でした。流星群のアプリの購読を解除する

たとえば、私は最初に2ページを持っています。クライアントはusersに登録し、2番目にはprojectsを購読しています。

クライアントがユーザーページからプロジェクトページに移動するとき、彼は依然としてユーザーを購読していますが、プロジェクトページでは必要ありません。

私の最初の質問は:それはメモリまたはCPUを取るか?クライアントがより多くの出版物を購読しているとき、彼がルートからルートに行くとき。

もう1つは、退会するための適切な方法は何ですか? たとえば、彼がプロジェクトページに行くとき、ユーザーの出版物から退会します。

私が見ているパッケージがあります。例えば、reactive-table

ありがとうございます!

答えて

2

通常、購読を停止する場合は、Meteor.stop()を使用して購読を停止します。あなたはブレイズコンポーネントでMeteor.subscribe()条件付きで(例えば反応で自動実行、またはgetMeteorDataなど)の反応コンテキストの内部またはthis.subscribe経由()を呼び出し

場合:どのようにstop subscriptionsへのガイドから、 Meteorの反応システムは自動的に適切なタイミングでthis.stop()を呼び出します。

通常、購読を停止する必要はありません。それは自動的に行われます。

- 最初の質問では、アプリケーションによってはCPUが集中する可能性があります。そのため、チャットアプリケーションでは複数のpub/subを避けたいのです。

- 2番目の質問では、必要なテンプレートだけに必要なデータを得るために、必要なのはテンプレートレベルのサブスクリプションであり、ルータレベルではありません。 See this exampleを使ってFlow Routerでどのように行うのかを学び、他のルータにも同じことが言えます。

Template.blogPost.onCreated(function() { 
    var self = this; 
    self.autorun(function() { 
    var postId = FlowRouter.getParam('postId'); 
    self.subscribe('singlePost', postId); 
    }); 
}); 
+0

ありがとうございました。それはまさに私が達成しようとしていたものでした。 今は、購読が行われる前にhtmlをレンダリングするようです。 ヘルパーからのデータはレンダリングされません。 私は '{{#if Template.subscriptionsReady}}'を試みましたが、まだ結果はありませんでした。 これもお手伝いできますか? – Robert

+0

言うことは難しいです。どこでも間違ったことが起こる可能性があります。そのような場合に私を助けたのはパッケージmsavin:mongolです。 ctl + Mを使用すると、自分のページの購読内容を確認することができます。だから最初にあなたが本当にあなたが各ページで必要なコレクションに加入していることを確認してください。 – Kostas

関連する問題