迭代meteorjs中嵌套的每个语句(按类别分组)

Posted

技术标签:

【中文标题】迭代meteorjs中嵌套的每个语句(按类别分组)【英文标题】:Iterating over nested each statements in meteorjs (group by category) 【发布时间】:2016-02-27 16:03:11 【问题描述】:

我有一个产品列表,每个产品都有一个与之关联的类别。 我正在尝试列出按类似于this example 的类别分组的产品,但我无法让它工作。它只显示一个唯一的类别列表,而不是产品

我有以下帮手:

Template.supplierPage.helpers(
getCategories: function()
     var categories = Products.find(supplierId: this._id, 
                    sort:category: 1, fields: category: 1).fetch();
     return _.uniq( categories, true, function (product) 
        return product.category;
    );    
,
  products: function(category) 
     return Products.find(category: category, supplierId: this._id);
  
);

还有以下模板:

<template name="supplierPage">
<div class="ui dividing header">
    <h3 class="ui header">My Products</h3>
</div>
<div>
    > productCreate

    #each getCategories 
        <h1>category</h1>
            #each products.category
                > productItem
            /each
    /each
</div>

任何帮助将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

你几乎猜对了。您只是没有以正确的方式向 products 助手提供参数。这应该有效:

<template name="supplierPage">
<div class="ui dividing header">
    <h3 class="ui header">My Products</h3>
</div>
<div>
    > productCreate

    #each getCategories 
        <h1>category</h1>
            #each products category ../_id
                > productItem
            /each
    /each
</div>

您还需要在 products 帮助器中修复您对 this 的使用,因为它在使用 #each 时会发生变化。最简单的方法是提供它作为上面的附加参数:

products: function(category, supplier) 
   return Products.find(category: category, supplierId: supplier);

【讨论】:

太棒了!太感谢了!你让我很开心!

以上是关于迭代meteorjs中嵌套的每个语句(按类别分组)的主要内容,如果未能解决你的问题,请参考以下文章

为每个类别分配最小值和最大值,而不按类别分组

Laravel 8:按嵌套列对分组数组进行排序 - 我应该在 sortBy 闭包中放入啥?

如何对 Solr 中的多个字段执行嵌套聚合?

LINQ 的嵌套组

SQL递归查询知多少

在 jQuery 中按数据属性对 HTML 元素进行分组和计数