Meteor:分组文档并发布对象

时间:2015-06-16 07:35:07

标签: javascript meteor

我想知道如何根据条件对文档进行分组,并发布给客户。

假设我有以下文件:

[
  { name: 'John', createdAt: some_date_value_1 },
  { name: 'Jane', createdAt: some_date_value_2 },
  { name: 'Bob', createdAt: some_date_value_1 },
  { name: 'Jenny', createdAt: some_date_value_2 }
]

我可以做些什么来发布这样的结果?

{
  some_date_value_1: [
    { name: 'John', createdAt: some_date_value_1 },
    { name: 'Bob', createdAt: some_date_value_1 }
  ],

  some_date_value_2: [
     { name: 'Jane', createdAt: some_date_value_2 },
     { name: 'Jenny', createdAt: some_date_value_2 }
  ]
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这取决于您是否希望在客户端或服务器上执行此操作。

首先,显而易见的解决方案是:如果您没有特定的理由将它们与第一个结构一起存储,请使用第二个结构直接存储它们。

其次,另一个简单的解决方案是在客户端制作。这是一个使用undercore(与meteor捆绑在一起)的未经测试的代码:

var yourCollection = CollectionName.find();
var yourCollectionByDate = _.groupBy(yourCollection , 'createdAt');

第三,您仍然可以在服务器上执行此操作,但要么您将失去您的集合的反应性(例如使用Collection.aggregate与包),或者必须转换并观察之后的所有更改(这将是一点点过度杀戮。但看看here if you want more info

快速注释:除非您希望用户名称是唯一的,否则您应该依赖于mongo唯一ID(_.id)而不是您设置的名称。这样,您确定链接到正确的项目(没有重复)。