【问题标题】:Meteor: Filter documents by their publication provenance on client sideMeteor:通过客户端的发布来源过滤文档
【发布时间】:2015-08-15 20:51:59
【问题描述】:

我遇到了以下问题:

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

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

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

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

【问题讨论】:

    标签: meteor collections meteor-publications


    【解决方案1】:

    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
        }
    });
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-25
        • 2014-09-07
        • 2015-02-03
        • 1970-01-01
        • 1970-01-01
        • 2014-09-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多