我正在尝试订阅一个包含额外动态团队的用户团队列表。最后一个的id通过参数传递给订阅,如:
jdk.nashorn.api.scripting
extraTeamId var在我的服务组件上不断变化,每次var变化时我都需要在我的客户端集合上拥有这个动态团队。
我的第一个问题是:如果我在组件上更改此变量的值,发布是否应该接收此新值,或者它是否永远不会在服务器上更新?
如果Meteor不应该那样工作,还有其他好的选择吗?
我也在使用Angular2。
答案 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();
});
}
我希望这会有所帮助:)