3

我正在“Meteor.js Javascript 框架入门”一书中做练习,其中有一个部分创建了一个名为 categories 的模板,然后一个 {#each} 循环遍历集合。这是为了打印而完成的结果显示在屏幕上。这有效,代码如下。

<template name ="categories">

    <div class ="title">my stuff</div>

    <div id='categories'>
        {{#each lists}}

        <div id="category">

            {{Category}}

        </div>

        {{/each}}
    </div>

</template>

我的问题是这样的:

在下面的代码中,排序参数似乎没有做任何事情。我很好奇它应该做什么。我知道理论上它应该“排序”,但是当我使用参数时没有任何变化。我在流星文档中查找了它,但我无法弄清楚。我正在尝试修改代码,使其以不同的顺序排序。通过这种方式,我可以看到结果并真正了解{sort:的 工作原理。我尝试将{sort: {Category: 1}})修改为{sort: {Category: -1}})以及{sort: {Category: 2}})并且结果始终相同。

  Template.categories.lists = function() {
    return lists.find({}, {sort: {Category: 1}});  // Works

  /* return lists.find({}); */                     // Works just the same

  }

收藏品如下:

lists.insert({Category:"DVDs", items: [{Name:"Mission Impossible" ,Owner:"me",LentTo:"Alice"}]});

lists.insert({Category:"Tools", items: [{Name:"Linear Compression Wrench",Owner:"me",LentTo: "STEVE"}]});
4

2 回答 2

3

在您的代码中,您可以尝试将排序的参数更改为数组而不是对象,如下所示:
sort: [["Category","asc"],["another argument","desc"],[...]]
所以代码:

 Template.categories.lists = function() {
    return lists.find({}, {
        sort: [
            ["Category", "asc"],
            ["another argument", "desc"],
            [...]
        ]
    }); 
    // return lists.find({}); // Works just the same
}
于 2013-03-03T07:26:46.020 回答
0

根据我的理解,这是因为默认是按自然顺序排序。更多信息可以在这个链接中找到

于 2013-03-02T23:29:14.737 回答