Meteor 订阅管理器没有';在新订阅后更新集合
在我的Meteor应用程序中,我有这样一种情况,即我只有在客户端上有一个“设置”集合。因此,发布功能是:Meteor 订阅管理器没有';在新订阅后更新集合,meteor,publish-subscribe,Meteor,Publish Subscribe,在我的Meteor应用程序中,我有这样一种情况,即我只有在客户端上有一个“设置”集合。因此,发布功能是: Meteor.publish('settings', function (option) { this.added("settings", "settings", { bar: true, foo: { .... } }); this.ready(); }); 起初,我喜欢: waintOn: function () {
Meteor.publish('settings', function (option) {
this.added("settings", "settings", {
bar: true,
foo: { .... }
});
this.ready();
});
起初,我喜欢:
waintOn: function () {
return subs.subscribe('settings')
}
但当路线改变时,我会再次订阅
return subs.subscribe('settings', 10);
在此之后,我看到publish函数运行,但在客户端上什么也没有发生。
出于某种原因,服务器认为数据没有更改,并决定不执行任何操作。所以问题是我如何告诉Meteor数据已经改变,所以它会将数据发送到客户端。如果问题完全不同,我也很感兴趣
更新:发布功能可能如下所示:
Meteor.publish('settings', function (option) {
var list;
if (option === 10) {
list = [1,2,3,4,5];
}
this.added("settings", "settings", {
bar: true,
foo: list
});
this.ready();
});
更新2:预期的解决方案:
var isNew = true;
Meteor.publish('settings', function () {
if(isNew) {
this.added("settings", "settings", {
bar: true,
foo: list
});
isNew = false;
}
else {
this.changed('settings', 'settings', {.....});
}
this.ready();
});
如果有一个类似于this.exists('settings','settings')
的函数就更好了,因为isNew
变量感觉有点像黑客
无论如何,我现在的工作方式如下:
try {
this.removed('settings', 'settings');
} catch(e){}
this.added('settings', 'settings', {...});
...
选项
参数的作用是什么?换句话说,subscribe('settings')
与subscribe('settings',10)
有多大不同?在我的应用程序中,这意味着如果定义了选项,将添加一个数组,但这会如何影响订阅中定义的数据?你能更新你的问题吗?我已经用一个例子更新了这个问题,10
如何影响输出。正如您所见,我创建了一个无用的数组,但在我的应用程序中,我加载了文档并从itI中提取了一些数据,我找到了解决方案。您不能在同一文档上多次使用添加的
(请注意,“设置”是此虚拟文档的id)。相反,您应该在之后使用changed
。我找到了解决办法