Meteor.js:了解find {}方法中的排序参数

时间:2013-03-02 23:11:40

标签: meteor

我正在“Meteor.js Javascript Framework入门”一书中进行练习 有一个部分,其中创建了一个名为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:的工作原理。我尝试将 {sort:{Category:1}})修改为 {sort:{Category:-1}})以及 {sort:{类别: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"}]});

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

根据我的理解,因为默认是按自然顺序排序。可在此link

找到更多信息