这是将字符串转换为Node.js中的对象的最佳方法吗?

时间:2018-09-14 14:56:59

标签: javascript node.js express

下面的代码正在工作,但是,我认为这是很多代码。我对此感到不舒服。有人知道更简洁的书写方式吗?

主要目标是从HTTP查询中提取排序参数并对Mongoose / Mongodb集合进行排序。

排序查询为GET /flavors?sort=id ASC,因此,我在["id", "ASC"]中使用了此字符串sort,并在{id : ASC}的{​​{1}}中对其进行了转换

sortStr

2 个答案:

答案 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需要一个对象,因此您应该传递一个对象而不是字符串。