我需要显示从游标返回的某个数据字段。据我了解,最好的方法是定义一个帮助程序,然后使用#each标签将数据访问html
当我在助手中使用findOne()
时,我只能从一个文档中获得正确的数据结果,如果findOne()
的代码如下所示,如何对所有文档都具有相同的结果?(html中的数据上下文在表单元格中)。
findOne
代码但html中仅返回一个doc字段:
Template.products.helpers({
getOffers (){
result = OffersAggregate.findOne('offeringType-grouping').result[0].offeringType
return result
}
});
html代码:
<td>{{getOffers }}<td>
而find()
光标帮助器却出现错误结果:
“排队任务中的异常错误:无法调用非功能:”
Template.products.helpers({
getOffers (){
return OffersAggregate.find().fetch()
}
});
<table id="table" class="table table-hover table-bordered">
<thead>
<tr>
<th>Name</th>
<th>Price</th>
<th>Country</th>
<th>Number of Offers</th>
<th>Offers</th>
</tr>
</thead>
<tbody>
{{#each Product in Products}}
<tr>
<td>{{Product.Name}}</td>
<td>{{Product.Price}}</td>
<td>{{Product.Country}}</td>
<td>{{Product.Number}}</td>
{{#each offer in getOffers}}
{{#each result in offer.result }}
<td>{{result.offeringType}}</td>
{{/each}}
{{/each}}
</tr>
{{/each}}
</tbody>
</table>
答案 0 :(得分:1)
如果我正确理解了您的OffersAggregate
文档,则应该可以进行以下操作:
模板助手:
Template.products.helpers({
getOffers (){
return OffersAggregate.find().fetch();
}
});
注册新的模板助手:
Template.registerHelper('returnValueByIndex', function (array, index){
return array[index];
});
显示:
<table id="table" class="table table-hover table-bordered">
<thead>
<tr>
<th>Name</th>
<th>Price</th>
<th>Country</th>
<th>Number of Offers</th>
<th>Offers</th>
</tr>
</thead>
<tbody>
{{#each Product}}
<tr>
<td>{{Name}}</td>
<td>{{Price}}</td>
<td>{{Country}}</td>
<td>{{Number}}</td>
<td>
{{#with returnValueByIndex Product.[0].getOffers.[0].result @index}}
{{this.offeringType}}
{{/with}}
</td>
</tr>
{{/each}}
</tbody>
答案 1 :(得分:1)
注意:自从Mo A的答案出现以来,就给予了感谢。
{{#each}}
的上下文需要一个iterable
,它可以是数组或游标(或null
或undefined
之类的false值可以跳过每个块)
阅读:http://blazejs.org/guide/spacebars.html#Each-and-With
集合上的函数Collection.findOne
立即返回文档。这是流星Collection.find().limit(1).fetch()[0]
中方便的快捷方式。
因此,对于您的用例,它是find()
,并且使用了正确的过滤器。您描述的错误与find
无关,但与模板代码有关:
{{#each getOffers}}
<!-- this will be inside a blick a reference to the current element -->
{{#each this.result}}
<!-- this is now refering to the result property on the current element -->
{{#each offeringType}}<td>{{this}}</td>{{/each}}
{{/each}}
{{/each}}
您只需要简单地思考一下,在each
或with
块中,this
属性就是当前文档。要使您的each
更加易于推理,可以使用each var in iterable
:
{{#each offer in getOffers}}
{{#each result in offer.result}}
{{#each offeringType in result}}<td>{{offeringType}}</td>{{/each}}
{{/each}}
{{/each}}
更多信息:http://blazejs.org/guide/reusable-components.html(“首选{{##。in}}”部分)