我正在使用Meteor,并试图拥有一个包含产品的mongo集合,以及一个包含用户的集合。
产品有价格,但我还给了一个产品(现在作为测试)一个“dealerPrices”子集合,其中包含如下对象:
"partprice" : "98",
"dealerPrices" : {
"YH" : "120",
"AB" : "125"
},
我希望在我的网站上有一个表格,其中一列显示'partprice',旁边是另一列,显示当前登录经销商的价格。 我可以为dealerPrices做一个完全独立的收藏,但我不确定哪个方式更有效率,因为我是Mongo的新手。
我的问题是根据登录用户在“YH”或“AB”字段中定位该号码,Users集合有一个名为“profile”的子集合,其中包含一个名为“code”的字段,该字段将与“YH”或“AB”是每个经销商的唯一代码。
我正在使用把手在Meteor中显示数据,这里有一些显示表行的html。
Larger code section:
<template name="products">
<h2> All Products <span class="productCount"></span></h2>
<table class="table table-condensed table-striped table-hover table-bordered">
<thead>
<tr>
<th class="toHide">Unique ID</th>
<th>Print</th>
<th>Product</th>
<th>FF Code</th>
<th>Base Price</th>
<th>My Price</th>
</tr>
</thead>
{{> AllProducts}}
</template>
<template name='AllProducts'>
{{#each row}}
<tr class='productRow'>
<td class="product-id toHide">{{_id}}</td>
<td class="print"><input type="checkbox" class="chkPrint"/></td>
<td class="product-name">{{partname}}</td>
<td class="product-code">{{code}}</td>
<td class="product-az-price">${{partprice}}</td>
<td class="product-dealer-price">${{dealerPrices.YH}}</td>
</tr>
{{/each}}
</template>
我希望我能正确解释这一点,基本上我试图找到一些替代连接和产品表,经销商 - 产品 - 经销商价格关系表和关系数据库中的用户帐户表。
答案 0 :(得分:2)
您可能希望在模板助手中执行此操作。首先,为每个循环创建一个模板,而不是仅使用{{#each}}
:
<template name="fooRow">
... table rows
<td class="product-dealer-price">{{userBasedThing}}</td>
</template>
然后,为这个新的fooRow
模板添加模板助手:
Template.fooRow.userBasedThing = function () {
var result = "";
if (Meteor.userId() && this.dealerPrices)
result = this.dealerPrices[Meteor.user().profile[0].code];
return result;
}
然后摆脱each
循环中的内容,并将其替换为:
{{#each row}}
{{> fooRow}}
{{/each}}
应该这样做!