是否有办法使特定订阅的Meteor依赖性仅取决于集合中的文档而不取决于文档中的数据?
例如,假设我有一组用户。我发布了:
Meteor.publish("Users_All", function () {
return Users.find();
});
在客户端上,我有一个特殊的依赖关系,它是在订阅集合后建立的:
Deps.autorun(function () {
// run some expensive computation on Users.find().fetch();
});
我只想在添加新文档或从集合中删除文档时运行我的计算。但是,现在只要设置了任何文档中的特定元素,就会调用它。我如何构建一个依赖项,以至于不是这种情况?
答案 0 :(得分:2)
您可以手动添加和删除已发布集中的文档,而忽略文档更改。
Meteor.publish("Users_All", function () {
var self = this;
var handle = Users.find().observeChanges({
added: function (id, fields) {
self.added('users', id, fields);
},
removed: function (id) {
self.removed('users', id);
}
});
self.ready();
self.onStop(function () {
handle.stop();
});
});
注意: added
和removed
的第一个参数应该是集合的名称。我只是假设'users'
。
Meteor的publish文档提供了更多信息和示例。