0

アイアンルーターを使用しています。次のような 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」) に移動すると、ユーザーにはすべての要素ではなく限られた数の要素が表示されます。 .

このルートを読み込んでいるときにサブスクリプションを手動で再トリガーする方法はありますか? 可能であれば、アプリに新しいパッケージを追加せずにこれを行いたいです。

4

1 に答える 1