アイアンルーターを使用しています。次のような RouterController があります。
var loggedInUserController = RouteController.extend({
layoutTemplate: "GenericLayout",
waitOn: function () {
return Meteor.subscribe("TheDataINeed");
}
});
そして、このコントローラーを使用して「TheDataINeed」を待機するルートを定義しました。
Router.route("/myapp", {
name: "Landing",
controller: loggedInUserController,
data: function () {
if(this.ready()){
return {content: "page-landing"};
}
}
});
さて、問題は、私がサブスクライブしているデータが条件付きであることです。つまり、ユーザーの役割に応じて、次のように異なるデータを公開します。
if (!Roles.userIsInRole(this.userId, 'subscribed') ) {
return [
myData.getElements({}, { fields: { _id: 1, title: 1}, limit: 5 })
];
} else {
return [
myData.getElements({}, { fields: { _id: 1, title: 1} })
];
}
ユーザーのロールが「サブスクライブ」でない場合、公開されるデータを 5 つの要素に制限します。
問題はパブリッシュが反応的でないことです。そのため、ユーザーが初めてロールを「サブスクライブ」に変更し、ルート (「/myapp」) に移動すると、ユーザーにはすべての要素ではなく限られた数の要素が表示されます。 .
このルートを読み込んでいるときにサブスクリプションを手動で再トリガーする方法はありますか? 可能であれば、アプリに新しいパッケージを追加せずにこれを行いたいです。