У меня есть несколько вариантов фильтров на моем сайте.
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