sql >> Databáze >  >> NoSQL >> MongoDB

Vrácení pole vnořených dokumentů prostřednictvím Meteor / Mongo

Váš jediný problém je pokus iterovat kurzor a podpole v rámci každého bloku. Pokud oddělíte items šablonu a jednotlivou item šablony, skončíte s požadovaným výsledkem.

Pro zjednodušení jsem váš kód upravil tak, aby vypadal takto:

Toto je vaše hlavní tělo:

<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>

A toto je váš pomocník:

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

Za předpokladu, že dokument položky vypadá takto:

{ 
  itemText: String,
  itemTags: Array
}

Na Meteorpadu jsem vytvořil aplikaci, se kterou si můžete hrát:

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

můžete zde dále upravovat kód a vidět změny v reálném čase. Je to v podstatě jsfiddle pro meteor.

Upravit: inspirováno komentářem @chip-castle, můžete ve skutečnosti použít jedinou šablonu s vnořenými each bloky:

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

Použití samostatných šablon je však flexibilnější jak při návrhu, tak při zpracování událostí tam, kde je to nutné.



  1. Používejte MongoEngine a PyMongo společně

  2. Mongodb třídí dokumenty podle komplexní vypočítané hodnoty

  3. Mongoose neukládá data

  4. Streamujte z mongodb kurzoru do expresní odpovědi v node.js