Условно, где условие в Sequelize Node JS - PullRequest
0 голосов
/ 11 июля 2019

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

router.get("/getsearchdata",(req, res) => {
    var searchquery =[
        {model:ProvidersCategories,attributes:["category_id"],
        include: [
            {model:Categories,attributes:["category_id","category_name"]},
        ]
        }
        ]  


    if(req.query.agency && req.query.agency!=''){
        searchquery.where = {
        $and: [
        {agencyName: {$like: '%' + req.query.agency + '%'}},
        ]
    }
    }


    Providers.findAll({
        include:searchquery
    }).then(providerData =>{
        if(!providerData) {
        res.status(404).send({reason:'no data found'});
        } else {
        res.status(200).send(providerData);
        }
    });
    });

У меня есть три таблицы «поставщики», «категории» и «поставщик_Категории»».Я пытаюсь объединить три таблицы и получить поставщиков.В запросе, т.е. req, если есть вход req.query.agency != '', то условие if должно быть добавлено where agencyName like "% + req.query.agency + %", если вход req.query.agency == '', тогда условия if не должно быть.Для которого я попробовал приведенный выше код.Но условие where не объединяется с основным запросом, даже если есть входные данные req.query.agency

Как правильно написать, где условно

1 Ответ

1 голос
/ 11 июля 2019

Ваша переменная searchquery является массивом, и вы не можете присвоить ей where свойство.Что вам нужно сделать, это просто передать объект where объекту параметров запроса:

    router.get("/getsearchdata", (req, res) => {
        var whereClause;

        if (req.query.agency && req.query.agency != '') {
            whereClause = {agencyName: {$like: '%' + req.query.agency + '%'}};
        }


        Providers.findAll({
            include: [
                {
                    model: ProvidersCategories, attributes: ["category_id"],
                    include: [
                        {model: Categories, attributes: ["category_id", "category_name"]},
                    ]
                }
            ],
            where: whereClause
        }).then(providerData => {
            if (!providerData) {
                res.status(404).send({reason: 'no data found'});
            } else {
                res.status(200).send(providerData);
            }
        });
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...