Meteor对文档与集合的依赖关系

时间:2014-08-12 14:00:42

标签: meteor

是否有办法使特定订阅的Meteor依赖性仅取决于集合中的文档而不取决于文档中的数据?

例如,假设我有一组用户。我发布了:

Meteor.publish("Users_All", function () {
    return Users.find();
});

在客户端上,我有一个特殊的依赖关系,它是在订阅集合后建立的:

Deps.autorun(function () {
    // run some expensive computation on Users.find().fetch();
});

我只想在添加新文档或从集合中删除文档时运行我的计算。但是,现在只要设置了任何文档中的特定元素,就会调用它。我如何构建一个依赖项,以至于不是这种情况?

1 个答案:

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

注意: addedremoved的第一个参数应该是集合的名称。我只是假设'users'

Meteor的publish文档提供了更多信息和示例。