2015-08-31 43 views
0

我需要将minmax字段添加到发布函数中的集合项目中,并通过此文件筛选项目。我找到了解决方案,通过使用forEach对光标:流星游标数和forEach

Meteor.publish 'productsWithMinMax', (filter, options) -> 
    Products.find(filter, options).forEach (p) => 
     p.min = Math.min p.price1, p.price2, p.price3, p.price4 
     p.max = Math.max p.price1, p.price2, p.price3, p.price4 

     if p.min && p.max && (p.max < p.mainPrice || p.min > p.mainPrice) 
      @added "products", p._id, p 

    Counts.publish @, 'numberOfProductsWithMinMax', Products.find(filter), {noReady: true} 

    @ready() 

但现在Counts.publish返回错误计数我的光标。在这种情况下如何计算我的光标?

+1

只有符合max/min/mainPrice标准的文档才被发布至关重要吗?如果没有,似乎只是发布所有匹配的产品,然后在客户端上使用转换/助手来确定您需要哪些产品(作为奖励,这也会给您带来反应性)会更容易。 –

+0

@DavidWeldon感谢您的想法。我有大约3k的产品在收藏。发布一切是否可以? – Deadly

+0

可能不会 - 这会在用户体验可能受到影响的情况下达到极限。我认为'过滤器'会减少设置一些较小的初始大小 - 是不是这种情况? –

回答

0

我发现的唯一解决方案是将最大/最小属性添加到集合模型。

P.S.如果有人提出更好的建议,这将会很好。