1

我遇到了以下问题:

  • 我有一个自定义服务器端发布“P1”,它从集合“C”返回一组文档,服务器是唯一能够构建这个子集的服务器

  • 在我的客户上,我订阅了 2 个发布(“P1”和“P2”)返回集合“C”的 2 个子集,它们可能重叠。

  • 我想在我的客户端上仅列出出版物“P1”返回的元素,即服务器只能生成集合的元素。问题是我无法使用常规查找查询来过滤集合“C”并获取子集“P1”。这是因为只有服务器才能随意这样做。

然后,我如何根据文档的发布来源在客户端过滤文档?

4

2 回答 2

0

据我所知,您不能直接这样做。

一种可能的解决方案可能是使用 Meteor 方法来请求发布所需的 id,然后使用这些 id 进行订阅,然后您可以使用已有的 id 列表过滤客户端。

于 2015-06-02T07:51:09.937 回答
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
    }
});
于 2015-06-02T09:19:30.240 回答