MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Zurückgeben des Filialdokument-Arrays durch Meteor / Mongo

Ihr einziges Problem besteht darin, einen Cursor und ein Unterarray innerhalb jedes Blocks zu iterieren. Wenn Sie Ihre items trennen Vorlage und ein individuelles item Vorlage erhalten Sie Ihr gewünschtes Ergebnis.

Der Einfachheit halber habe ich Ihren Code so geändert, dass er folgendermaßen aussieht:

Dies ist Ihr Hauptteil:

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

Und das ist Ihr Helfer:

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

Angenommen, ein Artikeldokument sieht folgendermaßen aus:

{ 
  itemText: String,
  itemTags: Array
}

Ich habe eine App auf Meteorpad erstellt, mit der Sie spielen können:

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

Sie können den Code dort weiter ändern und die Änderungen in Echtzeit sehen. Es ist im Grunde jsfiddle für Meteor.

Bearbeiten: Inspiriert durch den Kommentar von @chip-castle können Sie tatsächlich eine einzelne Vorlage mit verschachteltem each verwenden Blöcke:

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

Die Verwendung separater Vorlagen ist jedoch flexibler, sowohl beim Design als auch bei der Handhabung von Ereignissen, wo dies erforderlich ist.