在Meteor内部,我希望改变动态循环内呈现的集合的顺序:
Template.chartPage.helpers({
employee:function(){
sortArr = [];
var timePeriod = Session.get("period");
var currentPage = Session.get("current_page");
sortArr[currentPage+'.'+timePeriod] = "asc";
return EmployeeCollection.find({}, sortArr).fetch();
},
});
HTML:
{{#each employee}}
{{first_name}}
{{/each}}
我想要它,以便当period
和current_page
的会话变量发生变化时,帮助程序中的排序顺序也会发生变化 - 会话变量会更新,但模板不会被重新呈现一种。
答案 0 :(得分:1)
在meteor中,数据库(目前)基于mongodb。升序为1
,降序为-1
。你的最终数组必须是:
return EmployeeCollection.find({}, {sort : {number: -1, size: 1} })
应该为您提供以下订单(每行是一个文档),其中包含number
和size
字段。
{ number : 5, size: 1, _id: ...}
{ number : 4, size: 2, _id: ...}
{ number : 3, size: 3, _id: ...}
有关如何使用mongodb订购的详细信息,请访问:http://docs.mongodb.org/manual/reference/method/cursor.sort/
另一方面,在将光标返回给模板助手时,不必使用fetch()
。 Meteor将自动解析它,而不必将其作为数组(带有提取)
只要遵循此结构,您就可以使用Session
构建排序查询。只要您更改Session
哈希,订单就会自动更改并重新呈现。