Реагируйте с mongoDb.find ({}) хотя бы на один параметр, но разрешите несколько параметров - PullRequest
1 голос
/ 21 апреля 2020

Я практикую свои навыки реагирования и умения go, создавая MERN-приложение, похожее на Reddit.

Я использую мон goose.

Я успешно закончил Передача одного параметра и поиск по нему.

Я хотел бы создать маршрут, который позволит пользователю получать результаты по крайней мере по одному предпочтению, но разрешать множественный выбор

Пример: Получить результаты для "Технологии", "Кулинария", "Игры".

Моя схема MongoDB содержит раздел категорий для каждого сообщения, по крайней мере с одним, иногда с несколькими.

{
    "_id" : ObjectId("5e9e31a445e1672d28080138"),",
    "username" : "StaySixFeetAwayPlease",
    "postTitle" : "Washer is leaking out the back.",
    "postBody" : "Hey, so last week I was doing laundry when I heard a big thud from the laundry room. Going in to investigate I couldn't figure out what caused the sound but now when I do laundry the washer leaks water. It's one of those portcullis washers with the little window in the front. Attaching a picture. Any advice?",
    "categories" : [ 
        "Appliance", 
        "Home"
    ],
    "date" : ISODate("2020-04-20T23:35:00.072Z")
}

Как я могу условно передать хотя бы один ИЛИ несколько параметров?

И как я могу получить результаты обратно, если хотя бы один из параметров совпадает в массиве категорий?

Что у меня есть.

Маршрут

router.route("/cat/:category")
   .get(apiController.getPostByCategories)

postsController

      getPostByCategories: function (req, res) {

      console.log(req.params)

      db.NewPost.find({ categories: req.params.category || /req.params/i})
      .then(postCategory => {
         console.log(postCategory)
      })
      .catch(err => {
         res.status(422).json(err)
      })
   }

Редактировать: Предложенное было полезно для понимания того, как использовать регулярное выражение "in" для mon goose ( невозможно использовать регулярное выражение в операторе $ in в mongodb ), но все еще не уверен как условно передать один или несколько параметров для поиска по.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...