将帖子除以天数(MeteorJS)

时间:2015-12-10 14:03:38

标签: javascript node.js meteor

我有

Posts - collection

Posts.insert({title:"1"}); - simple document

Template level subscription

Meteor.publish('all',function(){
  return Posts.find({sort: { createdAt: -1 }};
})

<template name="sss">
  {{#each posts}}
     {{title}}
  {{/each}}
</temaplate>

posts:function(){
  return Posts.find();
}

我尝试创建

10 December
"some title"
"some title"

09 December
"some title"
"some title"
"some title"

08 December
...

但我只有

"some title"
"some title"
"some title"
"some title"
...

我不明白如何创建这个日期?我尝试这样的事情

{{#if exist_10_dec}}
  {{#each posts}}
  ...
{{/if}}

{{#if exist_09_dec...

但这完全是胡说八道!知道怎么创建这个吗?

1 个答案:

答案 0 :(得分:0)

有很多不同的方法可以做到这一点,但最简单的方法是使用下划线库。首先遍历每个对象并将所需的日期设置为标题(即12月10日)。完成后,请尝试以下代码:

Template.template.helper({
    'posts': function() {
        var data = [ 
                { date: 'December 10th', title: 'blah1' },
                { date: 'December 9th', title: 'blah2' },
                { date: 'December 9th', title: 'blah3' },
                { date: 'December 10th', title: 'blah4' }
            ];
            var groupedData = _.groupBy(data, 'date');
            var result = _.map(groupedData, function(value, key) { 
            return { date: key, titles: value }; 
        });
        return result;
    }
});

按日期对数据进行分组,并创建一个对象数组,其中数组[&#39; 12月10日&#39;]将指向12月10日对象的每个实例。要以模板可以处理的格式获取它,您需要将其映射到数组。您的模板如下所示:

{{#each posts}}
    {{date}}
    {{#each titles}}
        {{title}}
    {{/each}}
{{/each}}

我还没有完全编译这段代码;但我确实测试了分组和映射片段,并将其转换为可用的数组。以此为指导,了解您想去的地方。