如何在Meteor中循环嵌入文档

时间:2016-04-23 12:19:56

标签: meteor

我在MongoDB集合“作者”中有一个嵌入式文档:

{"Name": "John Doe",
 "Country": "U.S.A", 
 "Books": [
    {"BName": "Book1", "Year": "1950"},
    {"BName": "Book2", "Year": "1960"}
  ]
}

我想访问图书数据,循环浏览并在表格中显示每本图书。

这是我的JS文件的样子

Template.Author.helpers({  
   author: function() {
       //_id of the Author is passed via the URL
       return Author.find({"_id": FlowRouter.getParam('_id')})
   }
 });

这是我报告的HTML

<template name="Author">
<body>
  <div class="row">
    <div class="col-md-2">
      Book Name
    </div>
    <div class="col-md-2">
      Year
    </div>
  </div>
  {{#each author}}
    {{> bookdetails}}
  {{/each}}
</body>
</template>

<template name="bookdetails">
  <div class="row">
    <div class="col-md-2">
      {{Books.BName}}
    </div>
    <div class="col-md-2">
      {{Books.Year}}
    </div>
  </div>
</template>

当我在嵌入式Books文档中只有一条记录时,这种方式有效,但是当我有多条记录时,这种方法就没有了 - 这是有道理的,因为'Books.BName'在那时是不明确的。

我需要遍历'Books'并输出每个BName和Year。 This答案是我发现的最接近的答案,但我收到错误:     TypeError:_. value不是函数 这可能是因为我有一个嵌入式文档而不是数组。

1 个答案:

答案 0 :(得分:0)

您的命名令人困惑。您已获得Book个帮助,可以返回作者,以及您传递给bookdetails模板的内容。您应该将帮助程序重命名为author以减少混淆。然后,您可以使用{{#each author.Books}}遍历实际的图书数组。

此外,在bookdetails模板中直接访问图书参数,例如{{BName}}代替{{Books.BName}}