Как правильно построить этот запрос сортировки MongoDB? - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь создать запрос сортировки Монго в конце базы перед передачей данных в Монго. В коде req.query.so - это тип сортировки (например, имя или идентификатор), а req.query.sd - это направление сортировки (1 для возрастания и -1 для убывания)

Этот код вызывает ошибку:

exports.indexWithStatus = function (req, res) {
  // sort
  let sort = null
  if (req.query.so && req.query.sd) {
    sort = `{${req.query.so}: ${req.query.sd}}` // not being constructed 
correctly
  }

Я получаю ошибку:

name: 'MongoError',
message:
'Failed to parse: sort: "{name: 1}". \'sort\' field must be of BSON type object.',
ok: 0,
errmsg:
'Failed to parse: sort: "{name: 1}". \'sort\' field must be of BSON type 
object.',
 code: 9,
 codeName: 'FailedToParse' }

Я не очень знаком с Mongo, и большинство вопросов, которые я нашел в Интернете об этой ошибке, были от людей, которые пытались передать массив, а не объект .sort ().

Я думаю, что проблема в том, что с помощью синтаксиса замены $ {req.query.so} я создаю строку, а не объект, но я не уверен в этом. Пожалуйста, посоветуйте мне, как это исправить.

1 Ответ

0 голосов
/ 13 июня 2019

Синтаксис замены в порядке, вы можете увидеть в сообщении об ошибке, которое вы получаете name и 1. Проблема в том, что вы создаете sort в виде строки с помощью обратных тиков ` `.

`{${req.query.so}: ${req.query.sd}}` => "{name: 1}"

Но если вы создадите его как объект var sort = {} и добавьте параметры, это должно работать

sort[`${one}`] = `${two}` => {name: "1"}

...