Как спроектировать фильтр в мангусте, который фильтрует только на основе выбранного поля - PullRequest
0 голосов
/ 05 июня 2019

У меня есть несколько вариантов фильтров на моем сайте. 1. имя 2. тип игры 3. семинар цена 4. семинар_трасса, 5. семинар_состояния, 6. семинар_город

Я хочу метод $ и filter, который фильтрует вот так.

Если я выберу только gamename, он должен отфильтровать все документы, где gamename соответствует критериям. Если я выберу gamename и gametype, тогда он должен отфильтровать все документы, где gamename AND gametype соответствует критериям.

 router.get('/:page',(req,res)=>{
  let query_seminar_gamename=req.query.seminar_gamename;
  console.log(query_seminar_gamename);
  let query_seminar_gametype=req.query.seminar_gametype;
  let query_seminar_price=req.query.seminar_price;
  query_seminar_price=Number(query_seminar_price);
  let query_seminar_city = req.query.seminar_city;
  let query_seminar_country=req.query.seminar_country;
  let perPage=9;
  let page=req.params.page || 1;

if (query_seminar_gamename!=null || query_seminar_gametype!=null || query_seminar_country != null) {
    SeminarFetch.find({"seminar_gamename":query_seminar_gamename,"seminar_gametype":query_seminar_gametype})
    .skip((perPage*page)-perPage)
    .limit(perPage)
    .sort({"seminar_price":query_seminar_price,"_id":-1})
    .then(seminar=>{
      SeminarGamenameConf.find().then(gameName_list=>{
        SeminarGametypeConf.find().then(gameType_list=>{
          SeminarFetch.count({"seminar_gamename":query_seminar_gamename,"seminar_gametype":query_seminar_gametype,"seminar_country":query_seminar_country,"seminar_state":req.body.seminar_state,"seminar_city":req.body.seminar_city},(err,count)=>{
            console.log("No of docs: ",count);
          }).exec(function(err,count){
            if (err) return err
            res.render('seminar',{
              seminar:seminar,
              current:page,
              pages:Math.ceil(count / perPage),
              seminarCount:count,
              gameName_list:gameName_list,
              gameType_list:gameType_list,
              country: countries
            });
          })
        })
      })
    })
  }
})

Теперь, если выбрано gamename и gametype и не выбрана страна для фильтра, тогда он должен вернуть все документы на основе gamename и gametype

This is the schema

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