MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Retornando array de subdocumentos através do Meteor/Mongo


Seu único problema é tentar iterar um cursor e um sub-array dentro do mesmo cada bloco. Se você separar seus items modelo e um item individual modelo, você terminará com o resultado desejado.

Para simplificar, alterei seu código para ficar assim:

Este é o seu corpo principal:
<body>
    {{> items}}
</body>

<template name="items">
  {{#each items}}
    {{> item}}
  {{/each}}
</template>

<template name="item">
  <h2>{{itemText}} tags are:</h2>
  <ul>
  {{#each itemTags}}
    <li>{{this}}</li>
  {{/each}}
  </ul>
</template>

E este é o seu ajudante:
Template.items.helpers({
  items: function () {
    return Items.find();
  }
})

Assumindo que um documento de item se parece com:
{ 
  itemText: String,
  itemTags: Array
}

Eu criei um aplicativo no Meteorpad para você brincar:

http://meteorpad.com/pad/BmRQ5fkwWEMBKszJW/SO-27951102

você pode alterar ainda mais o código e ver as alterações em tempo real. É basicamente jsfiddle para meteoro.

Editar: inspirado pelo comentário de @chip-castle, você pode de fato usar um único modelo com each aninhado blocos:
<template name="items">
  {{#each items}}
    <h2>{{itemText}} tags are:</h2>
    <ul>
    {{#each itemTags}}
      <li>{{this}}</li>
    {{/each}}
    </ul>
  {{/each}}
</template>

Mas usar modelos separados é mais flexível tanto no design quanto no tratamento de eventos, quando necessário.