如何绑定变量以使文字序列化?

时间:2018-12-28 23:23:35

标签: 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')')
    }
  });

查询工作正常,但理想情况下不会固定值pending,因此我想在其中有一个可用于查询不同状态的变量。

如何用变量替换待处理的字符串。

串联在这里不起作用,因为Sequelize具有解析串联SQL查询的奇怪方法,这会导致错误。这里有一个示例https://pastebin.com/u8tr4Xbt,我截取了错误here

的屏幕截图

1 个答案:

答案 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);