在我的服务器端,我发布了一个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
不会发布到客户端。
处理此问题的正确方法是什么?
答案 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);
});