使用Meteor按数组对象中的日期字段排序

时间:2016-06-02 12:37:26

标签: javascript arrays mongodb meteor spacebars

我在我的Meteor应用程序中添加了一个对象数组到我的用户集合,名为contacts。它现在看起来像这样:

 {
    "_id" : "p6c4cSTb3cHWaJqpG",
    "createdAt" : ISODate("2016-05-11T11:30:11.820Z"),
    "services" : {
            .....
      },
  "username" : "admin",
  "emails" : [ 
    {
        "address" : "email@email.com",
        "verified" : true
    }
   ],
   "points" : 28,
   "contacts" : [ 
       {
        "when" : ISODate("2016-06-02T12:22:53.747Z"),
        "who" : "4YBufbE9PByJBkasy"
       }, 
       {
        "when" : ISODate("2016-06-02T12:00:41.833Z"),
        "who" : "EvF7DbFazmiuG86mD"
       }, 
       {
        "when" : ISODate("2016-06-02T12:21:41.415Z"),
        "who" : "MNFTSzjjzmYWgDvey"
       }
   ]
 }

我可以很好地在我的页面上显示联系人,但它们按照它们在集合中出现的顺序排列。 我想按when字段中的日期对它们进行排序。这可能吗?

我的助手方法:

 Template.contacts.helpers({
  'cont': function(){
     var user = Meteor.user();
     return user;
   }
 });

和我的模板:

 <template name="contacts">
    {{#each cont.contacts}}
        <h1><a href="/message/{{who}}">{{who}}</a></h1>
    {{/each}}
 </template>

2 个答案:

答案 0 :(得分:1)

Akram Saouri走在正确的轨道上,我只需要深入挖掘一下。所以我会发布我提出的100%工作解决方案。 The docs are your friend

Client.js:

 Template.contacts.helpers({
    'cont': function(){
        var contacts = Meteor.user().contacts;
        var result = contacts.sort(function (a,b) {
           if (a.when > b.when){
                return -1;
           }
           if (a.when < b.when){
                return 1;
           }
            return 0;
           });
       return result;
      }
    });

Blaze模板:

 <template name="contacts">
        {{#each cont}}
             <h1><a href="/message/{{who}}">{{who}}</a></h1>
        {{/each}}
 </template>

答案 1 :(得分:0)

您可以直接从帮助程序发送contacts数组,并按照以下方式对其进行预先排序:

 Template.contacts.helpers({
  'cont': function(){
     var user = Meteor.user();
     var contacts = user.contacts.sort({'when':'-1'})
     return contacts;
   }
 });

通过这种方式,你可以看起来更简单:

 <template name="contacts">
    {{#each contacts}}
        <h1><a href="/message/{{who}}">{{who}}</a></h1>
    {{/each}}
 </template>