Код ниже работает, однако, я думаю, что это много кода. Мне неудобно с этим. Кто-нибудь знает более краткий способ написать это?
Основная цель - извлечь параметр сортировки из HTTP-запроса и отсортировать коллекцию Mongoose / Mongodb.
Запрос на сортировку GET /flavors?sort=id ASC
, поэтому я взял эту строку ["id", "ASC"]
в sort
и преобразовал ее в {id : ASC}
в sortStr
router.get("/", (req, res) => {
var { sort } = req.query;
var v_fields = sort.split(",");
var v_field = v_fields[0].replace('[', '');
var v_order = v_fields[1].replace(']', '');
var sortStr = `{ ${v_field} : ${v_order} }`;
var re = new RegExp(`"`, 'g');
sortStr = sortStr.replace(re, '');
Flavor.find().sort(sortStr).then(result => {
...
}