下面的代码正在工作,但是,我认为这是很多代码。我对此感到不舒服。有人知道更简洁的书写方式吗?
主要目标是从HTTP查询中提取排序参数并对Mongoose / Mongodb集合进行排序。
排序查询为GET /flavors?sort=id ASC
,因此,我在["id", "ASC"]
中使用了此字符串sort
,并在{id : ASC}
的{{1}}中对其进行了转换
sortStr
答案 0 :(得分:1)
如果我对您的理解正确,并且您的排序字符串始终代表包含两个元素的数组,则可以执行以下操作:
var s='["id", "ASC"]';
var arr=JSON.parse(s);
var sortObj={};
sortObj[arr[0]]=arr[1];
答案 1 :(得分:0)
是的,
const [key, order] = req.query.sort.split(" ");
Flavor.find().sort({ [key]: order }).then(/*...*/);
关于您的代码:
1)vfields
是一个数组,并且数组元素在您的示例中不包含任何[
或]
,因此无需删除它们。
2)sort需要一个对象,因此您应该传递一个对象而不是字符串。