Meteor,动态订阅参数

时间:2017-01-22 22:53:05

标签: angular meteor publish-subscribe

我正在尝试订阅一个包含额外动态团队的用户团队列表。最后一个的id通过参数传递给订阅,如:

jdk.nashorn.api.scripting

extraTeamId var在我的服务组件上不断变化,每次var变化时我都需要在我的客户端集合上拥有这个动态团队。

我的第一个问题是:如果我在组件上更改此变量的值,发布是否应该接收此新值,或者它是否永远不会在服务器上更新?

如果Meteor不应该那样工作,还有其他好的选择吗?

我也在使用Angular2。

1 个答案:

答案 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
        });
     }

在客户端,你可以做这样的事情。

     userteamdata: Observable < any[] > ;
     userteamSub: Subscription;

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

现在,当您的extraTeamId值发生变化时,您可以检测到该变化        并做这样的事情

valuechangefunction(){

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

我希望这会有所帮助:)