我正在开发一个旅游应用程序的项目中。一些项目以以下方式添加到系统中 广告(酒店,夜总会)和一些物品(例如海滩,国家公园)添加为有用的信息
我有一个名为items的表。
项目
id | category_id | name | is_payment
1 | 1 | hotel califonia | 1
2 | 1 | hotel hilton | 1
3 | 2 | Yala national park | 0
4 | 2 | Kumana national park| 0
此处category_id是指类别表。
类别
id | name | type
1 | Hotels | commercial
2 | National parks | non-commercial
我想从项目表中选择所有项目。 但是,如果这是商业商品,则需要在显示给最终用户之前检查是否付款。
我到目前为止所做的是
const data = await db[model_name].findAndCountAll({
include: [{
model: db.Category,
where: {
}
}],
where: {
city_id: req.params.id
}
})
我的原始查询也将是这样
SELECT i.*
FROM items i
JOIN categories c
ON i.category_id = c.id
WHERE c.type != 'commercial'
OR (c.type = 'commercial' AND i.is_payment = 1)
如何使用sequelizejs实现此目标? 任何帮助 在此先感谢!
答案 0 :(得分:0)
也许这会有所帮助:
include: [{
model: db.Category,
where: {
[Op.or]: [
{type: {[Op.ne]: 'commercial'}},
{
[Op.and]: [
{type: 'commercial'},
{is_payment: 1}
]
}
]
}
}],
我没有测试。 随着时间的流逝,http://docs.sequelizejs.com/manual/tutorial/querying.html上的一些有关运算符的部分将非常有用。