Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何循环遍历Meteor中的嵌入式文档_Meteor - Fatal编程技术网

如何循环遍历Meteor中的嵌入式文档

如何循环遍历Meteor中的嵌入式文档,meteor,Meteor,我在MongoDB集合“Author”中有一个嵌入式文档: 我想访问图书数据,循环浏览并在表格中显示每本书。 这就是我的JS文件的样子 Template.Author.helpers({ author: function() { //_id of the Author is passed via the URL return Author.find({"_id": FlowRouter.getParam('_id')}) } }); 这是我报告的H

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

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

这就是我的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>

书名
年
{{{每位作者}
{{>bookdetails}
{{/每个}}
{{Books.BName}
{{Books.Year}
当我在嵌入的Books文档中只有一条记录时,这种方法是有效的,但当我有多条记录时,这种方法是无效的,因为“Books.BName”在这一点上是不明确的

我需要循环浏览“书籍”并输出每个名称和年份。答案是我发现的最接近于这样做的答案,但我得到了错误: TypeError:\ u0.value不是函数
这可能是因为我有一个嵌入的文档,而不是数组。

您的命名令人困惑。您有一个返回作者的
Book
助手,这就是您要传递给
bookdetails
模板的内容。您应该将助手重命名为
author
,以减少混淆。然后您可以使用
{{{each author.books}}
遍历实际的书籍数组


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

谢谢@hubert og。关于命名的观点很好——我在问题中修改了这一点
{{{每个author.Books}
是我一直在寻找的方向,但是做了那个改变并改成
{{BName}
(这在你遍历author.Books之后是有意义的)对我不起作用(不返回任何数据)。我没有注意到你也在做
author.find
。将其与其他调整一起更改为
Author.findOne
。谢谢,这很有效!然而,当一个特定作者只有一本书时,它就失败了(与之相反,当它工作时不止一本书)。我得到以下错误:
{{{#each}}当前只接受数组、游标或假值。
这可能是因为在这种情况下,您没有遵循相同的模式,而是将单个书本作为对象而不是包含单个对象的数组传递。最好只保留一个模式。太好了,非常感谢!现在可以了。我花了很多天的时间试图把这件事做好——非常感谢你的帮助和耐心!
<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>