typescript - 如何使用包含模型中的属性来创建 where 条件?

标签 typescript orm sequelize.js sequelize-typescript

我想在我的查询中使用包含模型的属性,我使用 sequelize 和 sequelize-typescript 以及一些以前的版本,我使用文字将 sql 变量注入(inject)到我的查询模型中并且可以工作,但是这些方法已经干涸,因为它是一个 SQL 注入(inject)漏洞现在,我不知道访问我的包含模型的属性有什么用

我想使用 cve_agenda 属性来评估 invitados.cve_funcionario 在同一级别的 or 运算符

我用这些:

M_AG_EVENTOS.findAll({
                where: {
                        $or: [
                          cve_agenda: cve_agenda, ORM.instance.seql.literal(`"invitados"."cve_funcionario" =${cve_funcionario}`),
ORM.instance.seql.literal(`"comisionado"."cve_funcionario" = ${cve_funcionario}`)]
                } ```




最佳答案

在您的示例中,SQL 注入(inject)是可能的,因为您直接在查询字符串中传递参数。防止 SQL 注入(inject)的最好方法是使用准备好的语句。然后将 SQL 查询和参数分开,数据库读取参数作为文本(因此即使参数值为 DELETE FROM users,它也不会被执行,只是被视为字符串)。与 Sequelize您可以使用 Bind parameters .

但回到您的问题,这里有一个示例如何使用 include 进行查询看起来:

ModelA.findAll({
  where: { name: 'John' },
  include: [{
    model: ModelB,
    as: 'modelB',
    where: { active: true },
  }],
});

关于typescript - 如何使用包含模型中的属性来创建 where 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57596446/

相关文章:

php - 好的 PHP ORM 库吗?

sequelize.js - findAndCountAll 计数得到一个比实际返回数据更大的数字

node.js - 更新 Sequelize 模型时,失败并返回与我提供的不同的表名?

javascript - Nativescript slider 值延迟

javascript - 未捕获的 TypeError : Can't add property 12, 对象不可扩展

entity-framework - ORM 大容量数据库

node.js - 是否有用于 sequelize 的拦截器模式,用于将敏感数据标记化和去标记化到/从数据库

Angular:串联和并联组合 Observables

javascript - Sequelize 创建不止一个记录问题

ruby-on-rails - NodeJS 和 ORM?