MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Restituzione dell'array di documenti secondari tramite Meteor / Mongo

Il tuo unico problema è provare a iterare un cursore e un sottoarray all'interno dello stesso ogni blocco. Se separi i tuoi items modello e un singolo item modello, otterrai il risultato desiderato.

Per motivi di semplificazione, ho modificato il tuo codice in modo che assomigli a questo:

Questo è il tuo corpo principale:

<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 questo è il tuo aiuto:

Template.items.helpers({
  items: function () {
    return Items.find();
  }
})

Supponendo che un documento dell'elemento assomigli a:

{ 
  itemText: String,
  itemTags: Array
}

Ho creato un'app su Meteorpad con cui puoi giocare:

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

puoi modificare ulteriormente il codice lì e vedere le modifiche in tempo reale. Fondamentalmente è jsfiddle per meteor.

Modifica: ispirato dal commento di @chip-castle, puoi infatti utilizzare un unico template con each annidato blocchi:

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

Ma l'utilizzo di modelli separati è più flessibile sia nella progettazione che nella gestione degli eventi ove necessario.