pro*_*ton 6 javascript node.js sequelize.js
我有这个子查询,用于检查与源模型相关的列是否存在。
const defaultingLoans = await Loan.findAll({
where: {
[Op.and]: database.sequelize.literal('EXISTS(SELECT * FROM "Instalments" WHERE "Instalments"."loanId" = "Loan"."id" AND "Instalments"."status" = 'pending')')
}
});
Run Code Online (Sandbox Code Playgroud)
查询工作正常,但pending理想情况下该值不会固定,所以我希望在那里有一个变量,可用于查询不同的状态。
如何用变量替换挂起的字符串。
串联在这里不起作用,因为 Sequelize 有一种奇怪的方式来解析导致错误的串联 SQL 查询。一个例子在这里https://pastebin.com/u8tr4Xbt我在这里截取了错误截图
你可以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})`)
}
});
Run Code Online (Sandbox Code Playgroud)
用法:
const loans = defaultingLoans(2000);
Run Code Online (Sandbox Code Playgroud)
编辑:虽然这里应该注意,您需要清理或引用amount传递给此函数的信息,以避免 SQL 注入攻击。
| 归档时间: |
|
| 查看次数: |
18109 次 |
| 最近记录: |