我遇到了以下问题:
我有一个自定义服务器端出版物" P1"它从集合" C"返回一组文档,服务器是唯一能够构建此子集的文档
在我的客户端,我订阅了2个出版物(" P1"和#34; P2"),返回了2个集合的子集" C",他们可能重叠。
我想在我的客户端上只列出出版物" P1"即服务器只能生成该集合的那个。问题是我无法使用常规查找查询来过滤集合" C"得到子集" P1"。这是因为只有服务器能够任意执行。
我如何根据其出版物来源在客户端过滤文件?
答案 0 :(得分:0)
据我所知,你不能直接这样做。
可能的解决方案可能是使用Meteor方法请求发布所需的ID,然后使用这些ID进行订阅,然后您可以使用已有的ID列表过滤客户端。
答案 1 :(得分:0)
Meteor将自动在单个实例中发布正确的文档(因此它们不会发布两次)。
因此,客户端实际上无法区分,因为服务器不会清楚地表明集合重叠。
除了使用像Elizier建议的方法之外别无他法:
Meteor.methods({
differences: function() {
var queryOne = _(MyCollection.find({..}).fetch()).pluck("_id");
var queryTwo = _(MyCollection.find({..}).fetch()).pluck("_id");
var differences = _([queryOne, queryTwo]).difference();
var intersection = _([queryOne, queryTwo]).intersection();
return differences
}
});