如何使用Mongo在Meteor中做foreach?

时间:2015-07-08 12:02:18

标签: meteor

有集合

 Peoples = new Mongo.Collection('peoples');

    Peoples.insert({
        name: ["Mark", "John", "Kate"]
    });

我想在名称

中显示所有名称
<template name="pTable">
  <tr class="trJob">
    <td>
      {{#each names}}
          {{> peopleName}}
      {{/each}}
    </td>
  </tr>
</template>

<template name="peopleName">
    <div>{{name}}</div>
</template>

我的Temlate助手中的内容

Template.pTable.helpers({
  names: function(){
    return Posts.tags;
  }
});

Template.peopleName.helpers({
  name: function(){
    return Posts.tags.find();
  }
});

我知道我的模板助手中有sh ***代码,知道怎么做才好吗?

它必须看起来像(在DOM中)

<td>
  <div>Mark</div>
  <div>John</div>
  <div>Kate</div>
</td>

2 个答案:

答案 0 :(得分:1)

由于您的收藏品名称不同,我会坚持使用第一个Peoples

以下是我如何处理你的助手:

Template.pTable.helpers({
  names: function(){
    return People.find({_id:yourId},{fields:{name:1}}).fetch();
  }
});

您的peopleName模板将是这样的:

<template name="peopleName">
    <div>{{this}}</div>
</template>

如果您需要获取所有文档的所有名称,我需要将您的{{#each names}}嵌套到另一个{{#each doc}}doc帮助器就是这样(更新names以及):

Template.pTable.helpers({
     doc: function(){
        return People.find().fetch();
      },
    names: function(){
            return People.find({_id:this.id},{fields:{name:1}}).fetch();
    });

答案 1 :(得分:1)

简单数组示例

Template.home.helpers({
  names: function(){
    return [1,2,3];
  }
});

<template name="home">
      {{#each names}}
        {{this}}
      {{/each}}
</template>

将打印:

1 2 3

每个项目变为&#34;这个&#34;在每个循环内。如果你在循环中调用另一个模板,那么它的&#34;这个&#34;将由项目

填充