猫鼬变量排序

KJ3*_*KJ3 1 javascript mongoose mongodb node.js

我想根据用户输入的变量进行排序.我有这样的事情:

var find = Record.find(query);
Run Code Online (Sandbox Code Playgroud)

以下工作正常:

find.sort({age: 1});
Run Code Online (Sandbox Code Playgroud)

它按年龄排序.我想做以下事情:

find.sort({sortField: 1});
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

find.sort[sortField] = 1;
Run Code Online (Sandbox Code Playgroud)

没有运气.是否可以通过传入的字符串变量设置排序?

Joh*_*yHK 5

假设您正在使用节点v4 +,您可以使用ES6 增强的文字语法支持计算属性名称:

find.sort({[sortField]: 1});
Run Code Online (Sandbox Code Playgroud)

否则,您需要在几个步骤中创建排序对象:

var sort = {};
sort[sortField] = 1;
find.sort(sort);
Run Code Online (Sandbox Code Playgroud)