Sequelize - 在 where 子句中查询其他表
Posted
技术标签:
【中文标题】Sequelize - 在 where 子句中查询其他表【英文标题】:Sequelize - query other table inside where clause 【发布时间】:2021-06-16 14:54:22 【问题描述】:我正在尝试做某事,但不知道这是否可以通过 sequelize 实现。基本上我在graphQl上运行了这段代码sn-p,基本上它的作用是在kits表上找到kits,然后验证“users”表上是否存在相同的id。如果不是,则返回它们,如果是,则不返回。但是现在我们需要对其进行扩展以进行分页,并且当前的 sn-p 不是那么可扩展的。这就是为什么我想只在 where 子句中包含 for 循环或以某种方式检查那里,但实际上不知道 mysql 上允许执行此操作的任何命令。
你有什么建议吗?
async findKitsWithResultNoReg2(_, search)
try
let promises = []
const a1 = await db.kits.findAll(
where:
[Op.and]: [
result: [Op.or]: [1, 2, 3] ,
cp: 0 ,
[Op.or]: [
kitID: [Op.like]: '%' + search + '%' ]
]
)
for (let i = 0; i < a1.length; i++)
const a2 = await db.users.findByPk(a1[i].dataValues.kitID)
if (a2 === null)
const a3 =
kitID: a1[i].dataValues.kitID,
result: a1[i].dataValues.result,
date: a1[i].dataValues.resultDate
promises.push(a3)
return Promise.all(promises)
catch (error)
console.log(error)
,
【问题讨论】:
【参考方案1】: async findKitsWithResultNoReg()
try
const a0 = await sequelize.query(`SELECT kitID, result, resultDate from kits where result in (1,2,3) and cp = 0 and archived = 0 and not Exists(select kitID from users where kits.kitID = users.kitID) order by resultDate desc`, type: QueryTypes.SELECT )
const a1 = JSON.stringify(a0)
return a1
catch (error)
console.log(error)
,
【讨论】:
以上是关于Sequelize - 在 where 子句中查询其他表的主要内容,如果未能解决你的问题,请参考以下文章
Sequelize - 使用 MariaDB 的 where 子句中的地理位置
Sequelize:WHERE LIKE 子句中的 Concat 字段