Meteor:如何在会话变量上对集合进行排序
Meteor: How can I sort a collection on a session variable?
我想写一个helper方法,它返回一个基于facebook的帐户列表,用户配置文件按配置文件文档的子字段排序。助手应该依靠两个会话变量来指定要排序的子字段和顺序。会话变量可以通过UI更新,从而使列表按新顺序重新呈现。类似于:
Session.set('sortby', "profile.email");
Session.set('sortorder', "-1");
Template.userlist.users = function() {
Meteor.users.find({}, {sort:{Session.get('sortby'):Session.get('sortorder')}});
}
使用Session.get('sortby')
作为属性名称会产生错误。所以问题是,如何使用会话变量来指定排序字段名称?
初始化一个Object并将键和值关联到它。然后将它传递给查询。例如:
var filter = {sort: {}};
filter.sort[Session.get('sortby')] = Session.get('sortorder');
Meteor.users.find({}, filter);
但是,请在分配它之前验证它是否未定义:)
将Session.get('sortby')
直接放在排序说明符中会产生语法错误。
在查询之前使用if-else
块来找出Session包含的值,并将该字段名放入查询中,而不是Session.get()
,如:
if( Session.equals('sortBy', 'profile_email') ){
return Meteor.users.find({}, {sort:{'profile_email':Session.get('sortorder')}});
}
else if( Session.equals('sortBy', 'other_value') ) {
return Meteor.users.find({}, {sort:{'other_value':Session.get('sortorder')}});
}
相关文章:
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 如何合并不同集合的游标并按日期排序
- 转到其他 URL 后,如何保持排序的骨干.js集合
- 骨干.js具有多种排序的集合
- 对JavaScript集合中的对象进行排序
- 使用多个键对MongoDB中的集合进行排序
- 在主干集合中对模型进行排序的奇怪行为
- 根据三个模型属性对主干集合进行排序
- 具有主干集合的可排序表
- 根据模型属性对主干集合进行排序
- 通过最大的嵌入式文档对文档集合进行排序 mongodb
- 按字母顺序对主干集合进行排序
- 流星:等待客户端排序的集合
- 如何在Meteor中使用两个按时间排序的不同模板显示两个不同的集合
- 如何以“Rs. 350,40”格式将价格作为字符串对集合进行排序
- 主干集合排序按多个属性
- Backbone.js自定义集合排序
- SproutCore集合排序
- 按xpages中值的总和对文档集合排序
- Minimongo不能在客户端进行集合排序