2016-05-01 3 views
0

Хорошо, у меня есть коллекция в MongoDB для проекта метеор. Документ слишком длинный, чтобы разместить здесь, так что я просто хочу, чтобы поставить в пример документа в коллекции, чтобы получить свою точку зрения:Метеор: как вернуть подмножество массива из mongodb

_id: "RxBqDLxxPG89ngp9d", 
name: "deck of cards", 
deck: [ 
    { 
    suit: "spades", 
    value: "ace", 
    }, 
    { 
    suit: "spades", 
    value: "king", 
    }, 
    { 
    suit: "spades", 
    value: "queen", 
    }, 
    { 
    suit: "hearts", 
    value: "ace", 
    }, 
    { 
    suit: "hearts", 
    value: "king", 
    }, 
    { 
    suit: "hearts", 
    value: "queen", 
    } 
] 

(можно предположить, что я всю палубу, но это не имеет значения для целей примера) И поэтому я знаю, что если бы я хотел получить имена всех из них на странице, мне пришлось бы написать помощника в любом шаблоне, с которым я работаю.

"displayCards": function(){ return deckOfCards.find().deck; } 

А потом в HTML помощника:

{{#each displayCards}} 
    <div class="card">{{value}} of {{suit}}</div> 
{{/each}} 

который будет возвращать:

ace of spades 
king of spades 
queen of spades 
ace of hearts 
king of hearts 
queen of hearts 

Так вот где я наконец-то мой вопрос:
Я хочу поставьте div с классом костюма вокруг каждого карточного костюма. Для этого мне нужно иметь возможность возвращать массив только элементов, где костюм равен сердцам или лопатам и т. Д. ИЛИ мне нужно вернуть часть массива 13 (или два, если мы как раз то, что я написал) одновременно. Есть ли способ сделать это?

+0

Ваш вопрос трудно понять. Не могли бы вы уточнить, что вы здесь делаете? – styvane

+0

в конечном счете? Я хочу иметь возможность вносить изменения стиля в один костюм, но не в другой. поскольку он стоит сейчас, у меня нет способа разместить разные костюмы в разных контейнерах, потому что, когда я делаю {{#each}}, он вытаскивает каждый элемент массива. Я хочу, чтобы иметь возможность тянуть только подмножество за раз. –

+0

Мне также должно быть ясно. Я не могу просто использовать $ slice, потому что в запущенной программе в каждом документе есть несколько массивов, поэтому, когда я запускаю deckOfCards.find ({}, {deck: {$ slice: 3}}), он будет ограничивать массив как я хочу, но он также вернет все остальное, и мне нужен только этот массив –

ответ

0

Так вы можете выполнить операцию для нескольких документов.

Ваш помощник код: -

"displayCards": function(){ 
    return deckOfCards.find() 
} 

Ваш код HTML: -

{{#each displayCards}} 
    {{#each deck}} 
      <div class="card">{{value}} of {{suit}}</div> 
    {{/each}} 
{{/each}} 

Таким образом, вы просто передать свой стол во втором цикле #each. Вот как вы можете это сделать.

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