我通过执行以下操作来检索产品。
Template.Bag.helpers({
bagged_products: function () {
var bag = Session.get("shoppingBag") || {};
var bagged_product_ids = Object.keys(bag);
var bagged_products = Products.find({_id: {$in: bagged_product_ids}});
return bagged_products;
}
})
字典bag
是{"product_id": quantity}
的数组。在模板中,我还想显示每个产品的数量。例如,我会做
for each retrieved_product p:
p.qty = qty
return updated_products
问题是bagged_products
是LocalCollection.Cursor
类型,我不知道如何为此添加属性,因此我可以在模板中执行以下操作。
<div class="product-name">{{p_name}}</div>
<div class="product-price">${{price}}</div>
<div class="product-qty">{{my_added_qty}}</div>
谢谢!
答案 0 :(得分:1)
您可以在帮助程序中使用转换:
var bag = Session.get("shoppingBag") || {}
var transform = function(product) {
product.qty = bag[product._id] || 0;
return product;
}
return Products.find({_id: {$in: bagged_product_ids}}, {transform: transform});
然后只需使用{{qty}}
或您在使用{{my_added_qty}}
答案 1 :(得分:0)
我在返回文件之前最终声明了一个新的本地收藏。
Template.Bag.helpers({
bagged_products: function () {
var bag = Session.get("shoppingBag") || {};
var tmpBag = new Mongo.Collection(null);
for (var p_id in bag) {
var p = Products.findOne({_id: p_id});
p.qty = bag[p_id];
tmpBag.insert(p);
}
return tmpBag.find();
}
})