使用mongodb集合中的特定项重复Meteor模板

时间:2015-08-22 11:52:47

标签: mongodb templates meteor meteor-blaze

我有一个这个项目的集合:

{
  "item1": ["foo", "bar", "baz"],
  "item2": ...
}

我做了一个辅助函数,为item1

中的每个项重复一个模板
Template.temp.helpers({
  items: function() {
    return Col.find({},{item1:1});
  }
});

这是模板

<template name="temp">
  {{#each items}}
    {{> anotherTemplate}}
  {{/each}}
</template>

但我回来了一个空数组。为什么它不起作用?

4 个答案:

答案 0 :(得分:0)

尝试使用{{#each items.item1}}

因为,Col.find({},{item1:1})只是从结果中删除所有其他字段。

Limit Fields to Return from a Query

它类似于SQL中的SELECT item1 FROM table

如果您需要为item1中的每个项重复模板,则需要确定应该使用哪个数组。

<template name="temp">
  {{#each items.item1}}
    {{> anotherTemplate}}
  {{/each}}
</template>

答案 1 :(得分:0)

也许你想要:

{{#each items}}
    {{#each item1}}
        {{> anotherTemplate}}
    {{/each}}
{{/each}}

或者这个:

Template.temp.helpers({
  items: function() {
    return Col.find({},{item1:1}).map(function(item){
      return item.item1
    })
  }
});

这样项目将返回item1数组。最初它只返回一个只有一个元素的对象数组,每个对象的item1数组:

[{
     item1: ["foo","bar","baz"]
 },
 {
     item1: ["lah","nah","jah"]
 },
 {
     item1: ["see","gee","bee"]
 }]

这样你就可以得到一个数组数组:[["foo","bar","baz"], ["lah","nah","jah"], ["see","gee","bee"]]

答案 2 :(得分:0)

Meteor mongo方法有点不同,你不能使用。

 return Col.find({},{item1:1});

你可以这样使用它:

 return Col.find({},{fields:{'item1':1}});

答案 3 :(得分:0)

我认为你需要从帮助

返回这样的东西
return Col.findOne({}).item1

它应该现在可以使用

由于