2016-10-05 4 views
0

Здравствуйте и извините за мой сломанный английский.Как сортировать и отображать записи манго, сгруппированные по дате в метеорных помощниках/шаблонах

Я нарисовал картину в красках, так что вы можете лучше понять мой вопрос/намерение: Sketch in Paint

Я хочу, чтобы построить этот HTML структуру на моем сайте, как на картинке.

Моя структура MongoDB:

{ "_id" : "doZfpnSFPzuPCi69W", "title" : "TodoA", "date" : "2016-10-03" } 
{ "_id" : "kLdCQotDBPmB3FGzY", "title" : "TodoB", "date" : "2016-10-03" } 
{ "_id" : "fgAoaq53oNdKQSHXv", "title" : "TodoA", "date" : "2016-10-04" } 
{ "_id" : "L6v4FC5PpyHjCkkpd", "title" : "TodoB", "date" : "2016-10-04" } 

Я знаю, как отобразить все записи в моем шаблоне с «каждый»:

<template name="myTemplate"> 
    {{#each showTodos}} 
    ... 
{{/each}} 
</template> 

Однако, я понятия не имею, как достичь своей цели, что вам может видеть на моей картинке. Я знаю, как использовать if-else в meteor, но я понятия не имею, как достичь этой html-структуры с помощью if-statement. Можете ли вы мне помочь с кодом и логикой, пожалуйста?

ответ

1

Вам просто нужно вложить две петли {{#each}}, одну для дат и для каждой даты, все соответствующие документы.

Но сначала вам нужно найти уникальные даты! Для этого используйте функцию нижнего подчеркивания.

HTML:

<template name="myTemplate"> 
    {{#each uniqueDates}} 
    this 
    {{#each todos}} 
     ... 
    {{/each}} 
</template> 

ЯШ:

Template.myTemplate.helpers({ 
    uniqueDates(){ 
    const dates = myCollection.find({},{sort: {date: 1}}) 
     .map((doc)=>{return doc.date}); 
    return _.uniq(dates,true); 
    }, 
    todos(){ 
    return myCollection.find({date: this}); 
    } 
}; 

Применение .map() к курсору позволяет извлекать только даты в виде массива. Затем вы используете _.uniq() в массиве, чтобы получить уникальные значения. Второй аргумент .uniq() сообщает, что значения уже отсортированы.

 Смежные вопросы

  • Нет связанных вопросов^_^