I want to sort based on a variable the user enters. I have something like this:
var find = Record.find(query);
The following works just fine:
find.sort({age: 1});
It sorts by age. I want to do the following:
find.sort({sortField: 1});
I've tried this as well:
find.sort[sortField] = 1;
To no luck. Any way to set sort with a string variable passed in?
I want to sort based on a variable the user enters. I have something like this:
var find = Record.find(query);
The following works just fine:
find.sort({age: 1});
It sorts by age. I want to do the following:
find.sort({sortField: 1});
I've tried this as well:
find.sort[sortField] = 1;
To no luck. Any way to set sort with a string variable passed in?
Share Improve this question asked Oct 16, 2015 at 0:10 KJ3KJ3 5,3184 gold badges37 silver badges54 bronze badges2 Answers
Reset to default 10Assuming you're using node v4+, you can use the ES6 enhanced literal syntax support for puted property names:
find.sort({[sortField]: 1});
Otherwise you need to create your sort object in a couple steps:
var sort = {};
sort[sortField] = 1;
find.sort(sort);
Figured it out. Can't use the find.sort[sortField] = 1 notation since it's a function, need to do that ahead of time.
var sort = {};
sort[sortField] = 1;
find.sort(sort);