流星发布过时了

时间:2017-05-04 01:50:16

标签: meteor collections publish

在我的服务器端,我发布了一个Groups集合。这依赖于发布与另一个Servers集合匹配的组。

Meteor.publish('groups', function() {   
    const servers = Servers.find({}); // simplified code
    return Groups.find({serverId: {$in: servers}});
});

客户端视图然后订阅:

self.autorun(() => {
    self.subscribe('groups');
});

这通常很好。当我在Servers集合中添加插入服务器时,问题就出现了,没有迹象表明发布更新了组,因此这个添加的服务器Groups不会发布到客户端。

处理此问题的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

流星指南始终是解决这类问题的良好起点。到这里https://guide.meteor.com/data-loading.html#publishing-relations。 TLDR;只需添加reywood:publish-composite包。 :)

让我知道。

答案 1 :(得分:0)

这里可能采用的直接方法是为Servers创建单独的发布,然后使groups Servers依赖。

// Server
Meteor.publish("servers", function() {
  return Servers.find({}, { fields: { _id: 1 } });
});

Meteor.publish("groups", function(serversIds) {
  return Groups.find({ serverId: { $in: serversIds } });
});

// Client
self.autorun(() => {
  self.subscribe("servers");
});

self.autorun(() => {
  const serversIds = Servers.find().map(server => server._id);
  self.subscribe("groups", serversIds);
});