Javascript Meteor:如何对会话变量上的集合进行排序?

Javascript Meteor:如何对会话变量上的集合进行排序?,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我想写一个helper方法,它返回一个基于facebook的帐户列表,这些用户配置文件按配置文件文档的子字段排序。助手应该依赖两个会话变量来指定子字段和排序顺序。会话变量可以通过UI更新,从而使列表以新的顺序重新呈现。比如: Session.set('sortby', "profile.email"); Session.set('sortorder', "-1"); Template.userlist.users = function() { Meteor.users.find({},

我想写一个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'作为属性名会产生错误。所以问题是,如何使用会话变量来指定排序字段名

直接在排序说明符中放置Session.get'sortby'将给出语法错误

在查询之前使用if-else块找出会话包含的值,并将该字段名放在查询中而不是会话中。获取类似:

将Session.get'sortby'直接放在排序说明符中会出现语法错误

在查询之前使用if-else块找出会话包含的值,并将该字段名放在查询中而不是会话中。获取类似:


初始化对象并将键和值与之关联。然后将其传递给查询。例如:

var filter = {sort: {}};
filter.sort[Session.get('sortby')] = Session.get('sortorder');
Meteor.users.find({}, filter);

但是,请在分配它之前验证它是否未定义:

初始化一个对象并将键和值关联到它。然后将其传递给查询。例如:

var filter = {sort: {}};
filter.sort[Session.get('sortby')] = Session.get('sortorder');
Meteor.users.find({}, filter);

但是,请在分配它之前验证它是否未定义:

您是否尝试将Session.get'sortorder'转换为整数?`Meteor.users.find{},{sort:{Session.get'sortby':+Session.get'sortorder}`你犯了什么错误?你能发布错误跟踪吗?错误在会话中。获取'sortby'。编译器声称该点字符在那里是非法的。您是否尝试将Session.get'sortorder'转换为整数?`Meteor.users.find{},{sort:{Session.get'sortby':+Session.get'sortorder'}`你犯了什么错误?你能发布错误跟踪吗?错误在会话中。获取'sortby'。编译器声称点字符在那里是非法的。