如何设计猫鼬过滤器,仅根据所选字段进行过滤

时间:2019-06-05 18:54:38

标签: javascript mongodb express mongoose filter

我的网站上有多个过滤器选项。 1.游戏名称 2.游戏类型 3.研讨会价格 4. workshop_country, 5. workshop_state, 6. workshop_city

我想要一个$ and过滤器方法,像这样过滤。

如果我仅选择游戏名称,则它应筛选出游戏名称符合条件的所有文档。 如果我选择了游戏名称和游戏类型,那么它应该过滤游戏名称和游戏类型符合条件的所有文档。

 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
            });
          })
        })
      })
    })
  }
})

现在,如果选择了游戏名称和游戏类型,而不是选择国家/地区作为过滤条件,则应根据游戏名称和游戏类型返回所有​​文档

This is the schema

0 个答案:

没有答案