Фильтровать, только если условие переменной не определено - PullRequest
0 голосов
/ 26 мая 2019

Это мой роутер:

reportRoutes.route('/:id').get(async (req, res) => {
    try{
        let id = req.params.id
        console.log(req.query)
        let team = req.query.team
        let league_acronym = req.query.league
        console.log('team',team)
        let regex = new RegExp( id, 'i')
        const report = await Report.find({ title: regex })
            .populate({path: 'like'})
            .populate({
                path: 'player',
                populate: [{ path: 'team' },
                {
                    path: 'team',
                    populate: {
                        path: 'league'
                    }
                }
            ]
            })

            if(league_acronym) {
                newReport = report.filter((v,i) => {
                    return v.player.team.league.acronym === league_acronym  && v.player.team.team_name === team
                })
                res.json(newReport)
            } else{
                res.json(report)
            }
    }  catch (e) {
        res.status(500).send()
    }
})

Я пытаюсь настроить фильтр, который просматривает отчет и возвращает newReport.

Условия, по которым он будет фильтроваться, основаны на параметрах строки запроса.

Поскольку параметры строки запроса не всегда присутствуют, мне нужен способ фильтрации условия, только если условие существует. Мысли?

1 Ответ

0 голосов
/ 26 мая 2019

Вы можете проверить соответствующие условия, только если есть значения в league_acronym и team

newReport = report.filter(v => 
  (!league_acronym || v.player.team.league.acronym === league_acronym) 
  && (!team || v.player.team.team_name === team)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...