Express + MongoDB - запрос объекта

1

Я пытаюсь отфильтровать свой результат от MongoDB. Я использую экспресс. Вот мои console.logs:

  1. req.query.filters из URL: http://localhost: 3000/test? filters =% 7Bpersonalbest% 3A% 7B% 27% 24gt% 27% 3A% 27170% 27% 7D% 2Cname% 3A% 7B% 27% 24gt % 27% 3A% 27M% 27% 7D% 7D
  2. объект, сделанный мной, чтобы проверить, работает ли это с моей базой данных, и это делает
  1. {Personalbest: { '$ GT': '170'}, имя: { '$ GT': 'М'}}
  2. {personalbest: {'$ gt': '170'}, name: {'$ gt': 'M'}}

Код:

var filters = req.query.filters
db.collection('skijumper').find(filters).toArray()

И, конечно, я получаю эту ошибку:

MongoError: селектор запросов должен быть объектом

Каков наилучший способ преобразования этой req.query в объект? Спасибо

  • 0
    Все, что находится в req.params или req.query является просто «строкой». Фактически bodyParser промежуточное программное обеспечение bodyParser для превращения содержимого req.body в реальный объект. Вы, вероятно, должны вместо этого отправлять объект в body . Но по сути JSON.parse «строка» в «объект». Это означает, что вам, вероятно, нужно также «цитировать» в кодировке urlencoding. Так что, кажется, гораздо проще отправить тело запроса.
  • 0
    Спасибо, я ценю вашу помощь!
Теги:
express
decode

1 ответ

1
Лучший ответ

Внешний интерфейс:

var filters = {personalbest:{'$gt':'170'},name:{'$gt':'M'}};
var url = "http://localhost:3000/test?filters=" + encodeURIComponent(JSON.stringify(filters));

Backend:

var filters = JSON.parse(req.query.filters);
  • 0
    Спасибо, это именно то, что я искал :)
  • 0
    Замечательно! Я рад, что смог помочь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню