所以我基本上是将一些查询字符串传递给我的端点以用作过滤器,而我正在使用Sequelize。
我知道我可以使用where
来过滤/查找记录,但是我想这样做,以便如果不提供查询字符串,只会被忽略。
当前:
const { status } = req.query;
const tickets = await models.Ticket.findAndCountAll({
where: {
status,
},
attributes: [
'id',
'status'
],
});
如果我不将状态作为查询字符串传递,则失败,因为无法执行where
。我尝试过也将undefined
传递给它,但是没有运气,它错误地说。
ERROR: WHERE parameter "status" has invalid "undefined" value
总而言之,我想这样做,以便如果确实提供查询字符串,则将它们插入到where
子句中,但是如果不提供,则将其忽略。
答案 0 :(得分:1)
如果您知道where
具有Sequelize可以使用的值,那就只是仅包含status
选项的情况。
const { status } = req.query;
// declare our query options
const options = {
where: {},
attributes: [
'id',
'status'
]
};
// if status has a value (!== undefined), include it in the query
if (status !== undefined)
options.where.status = status;
const tickets = await models.Ticket.findAndCountAll(options);