我有这个子查询,用于检查与源模型相关的列的存在。
const defaultingLoans = await Loan.findAll({
where: {
[Op.and]: database.sequelize.literal('EXISTS(SELECT * FROM "Instalments" WHERE "Instalments"."loanId" = "Loan"."id" AND "Instalments"."status" = 'pending')')
}
});
查询工作正常,但理想情况下不会固定值pending
,因此我想在其中有一个可用于查询不同状态的变量。
如何用变量替换待处理的字符串。
串联在这里不起作用,因为Sequelize具有解析串联SQL查询的奇怪方法,这会导致错误。这里有一个示例https://pastebin.com/u8tr4Xbt,我截取了错误here
的屏幕截图答案 0 :(得分:1)
您可以将defaultingLoans
变成接受金额的功能:
const defaultingLoans = amount => await Loan.findAll({
where: {
[Op.and]: database.sequelize.literal(`EXISTS(SELECT * FROM "Instalments" WHERE "Instalments"."loanId" = "Loan"."id" AND "Instalments"."amount" = ${amount})`)
}
});
用法:
const loans = defaultingLoans(2000);