2017-01-22 3 views
1

私は追加のダイナミックチームを含むユーザーチームのリストに登録しようとしています。最後のidはそのように、サブスクリプションにパラメータで渡されます。Meteor、動的サブスクリプションパラメータ

MeteorObservable.subscribe('user.teams', extraTeamId).subscribe(() => { 
    this.findUserTeams(); 
}); 

extraTeamIdのvarは常に私のサービス・コンポーネントに変更され、そして、私は私のクライアントのコレクションで、このたび、このダイナミックなチームを持っている必要がありますvarが変更されます。

私の最初の質問は、コンポーネントでこの変数の値を変更した場合、パブリッシュがこの新しい値を受け取るか、サーバー上で更新されないのですか?

メテオールがそのように働くことになっていなかったら、他にも良い選択肢がありますか?

また、Angular2を使用しています。

+0

ルックを助けることを願っています。この

valuechangefunction(){ if (this.userteamSub) { this.userteamSub.unsubscribe(); } this.userteamSub = MeteorObservable.subscribe('user.teams', extraTeamId).subscribe(() => { this.userteamdata = findUserTeam.find({}).zone(); }); } 

ような何かを行うことができ、今

 userteamdata: Observable <any[]> ; userteamSub: Subscription; this.userteamSub = MeteorObservable.subscribe('user.teams', extraTeamId).subscribe(() => { this.userteamdata = findUserTeam.find({}).zone(); }); 

](https://angular-meteor.com/tutorials/socially/angular2/search-sort-pagination-and-reactive-vars)、私はそれがあなたの必要性に一致すると思う – Khang

+0

ありがとう、私はこの実装を見ていない前に、私は好きだった!たぶん、私はそれのより簡単なバージョンを試してみるでしょう。 –

答えて

1

新しい価値を得たい場合は、最後のサブスクリプションから退会し、新しい値を再度購読する必要があります。あなたは角2の流星でこれを行うことができます。サーバー側で

if (Meteor.isServer) { 
    Meteor.publish('user.teams', function(option : string) { 
       console.log(option); // you will get your dynamic param value in option 
       return findUserTeams.find({"team": option}); // apply your query here 
     }); 
    } 

を公開し、クライアント側で、あなたはこのような何かを行うことができます。あなたのextraTeamId値の変化は、あなたがその変更 を検出して、私はこれが、この[リンクにおける反応性の変更部分について:)

+0

それは良いことですが、私はこれを避けようとしていました(購読を停止して再度購読する)が、それは必要と思われます。 私は2つのサブスクリプションを使用することを考えています.1つはユーザーチーム(多くのユーザーがいるかもしれません)と1つのサブスクリプションを生かしています。このようにすると、コレクションデータを削除してクライアントに再送信するオーバーヘッドを防ぐことができます。 その他のサブスクリプションは、余分なチームのみに適用されます。このサブスクリプションは、変更するたびに退会して再登録されます。どう思いますか? –

+0

@HenriqueRotava私は2つのサブスクリプションの代わりにあなたの問題にもう1つの解決策があると思うあなたは1つのアレイにすべてのチームを追加することができますonchangeまた、この配列に動的idを追加し、すべてmongdbクエリで$を使用して検索します。サーバー側からすべてのチームを公開するここにあなたが必要とするmondbクエリーへのリンクがあります。 http://stackoverflow.com/questions/8145523/mongodb-find-by-multiple-array-items。 –

関連する問題