我们在我们的项目中使用meteor V1.5。我们注意到了publish和subscriber方法的一种奇怪行为。在KADIRA为其中一个subscriber发布屏幕截图

publish法
Meteor.publish( 'companyBuiltCourses', companyId => {
return BuiltCourses.find({ company_id: companyId })
});当我们在subscriber下面使用并访问xyz页面时,KADIRA显示了对文档的连续抓取,如屏幕截图所示。,即使我们访问了另一个页面,这个图仍然是相同的
Template.xyz.onCreated(function() {
Tracker.autorun( () => {
if (Meteor.user()) {
Meteor.subscribe('companyBuiltCourses',Meteor.user().profile.company_id);
}
});
});当我们使用下面的subscriber方法并访问xyz页面时,KADIRA显示了对文档的连续抓取,如屏幕快照所示。,但是当我们访问另一个页面时,这个图会下降到0。它不会再获取文档了,
Template.xyz.onCreated(function() {
this.autorun( () => {
let self = this;
if(Meteor.user()){
self.subscribe('companyBuiltCourses',Meteor.user().profile.company_id);
}
});
});用于开发环境的,这两种方法在需要时只获取一次文档。这就是生产问题.
我们远程托管MongoDB,并在pm2上运行生产。我想不应该有连续的抓取。
发布于 2019-05-16 21:02:33
由于您提供的代码非常简单,所以很难判断到底发生了什么。我唯一能想到的是,跟踪器函数被反复调用。所以问题是,是什么原因造成的?
这段代码:Meteor.user().profile.company_id建议您在user集合中根据用户的配置文件存储数据。这并不好,因为用户可以从控制台修改自己的数据,帐户系统有时也会修改用户记录,这可能会影响订阅次数。无论如何,我建议将相关数据存储在单独的集合中,该集合可以由Meteor.userId()键控。我不确定这是不是这个问题的答案。
https://stackoverflow.com/questions/56171352
复制相似问题