【发布时间】:2019-11-21 03:35:29
【问题描述】:
我正在尝试在 sequelize 中执行查询,其中必须根据请求参数添加 where 条件
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);
}
});
});
我有三个表“providers”、“categories”和“provider_Categories”。我正在尝试加入这三个表并获取提供者。
在请求即req中,如果有输入req.query.agency != '',则必须添加一个if条件where agencyName like "% + req.query.agency + %",如果输入req.query.agency == '',则应该没有if条件。我已经尝试了上面的代码。但是即使有输入 req.query.agency,where 条件也不会连接到主查询。
有条件地写where的正确方法是什么
【问题讨论】:
标签: node.js sequelize.js sequelize-typescript