sequelize.js - Node Sequelize 查找 $like 通配符的位置

标签 sequelize.js

我正在尝试将 where like 子句添加到 Node Sequelize findAll,以表现得像 sql 查询 select * from myData where name like '%Bob%'使用以下代码

let data: Array<any> = await MyDataSequelizeAccess.findAll({
  where: {
    name: {
      $like: `%Bob%`
    }
  }
});

哪个返回以下错误

Invalid value { '$like': '%Bob%' }



如何在我的 sequelize 对象上执行那种类型的 where 通配符或 where like?
let data: Array<any> = await MyDataSequelizeAccess.findAll({
  where: {
    name: `Bob`
  }
});

这按预期工作,但我无法让通配符工作。

更新仍然没有骰子 - 根据 https://sequelize.readthedocs.io/en/latest/docs/querying/#operators我的语法看起来正确

我也在尝试(并且失败)对 $not 做同样的事情
let data: Array<any> = await MyDataSequelizeAccess.findAll({
  where: {
    name: {
      $not: `Bob`
    }
  }
});

并得到与上面相同的错误Invalid value { '$not': '%Bob%' }

最佳答案

字符串运算符(例如 $operator )在 Sequelize [1] 的 V5 中是遗留的.
您仍然可以使用传统方式使用运算符执行查询,但必须使用运算符的别名设置连接(对此会有弃用警告)。 [2]

const Op = Sequelize.Op;
const operatorsAliases = {
  $like: Op.like,
  $not: Op.not
}
const connection = new Sequelize(db, user, pass, { operatorsAliases })

[Op.like]:  '%Bob%' // LIKE '%Bob%'
$like: '%Bob%' // same as using Op.like (LIKE '%Bob%')
Sequelize.js 的更新文档在 Sequelize.Op 中提供运算符模块作为符号运算符。 [3]

Sequelize 默认使用 Symbol 运算符,以最大程度降低查询中注入(inject)运算符的风险;建议继续使用符号运算符。 [4]
const Sequelize = require('sequelize');
const Op = Sequelize.Op;

let data: Array<any> = await MyDataSequelizeAccess.findAll({
  where: {
    name: {
      [Op.like]: '%Bob%'
    }
  }
});

关于sequelize.js - Node Sequelize 查找 $like 通配符的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53971268/

相关文章:

mysql - 如何在 Sequelize 的 INSERT 函数中使用 mysql SELECT 查询

node.js - 在 Sequelize 中分配外键的默认值后自动同步出错

javascript - 那么为什么不将 promise 传递给下一个呢?

node.js - 从 Sequelize 获取最近发送消息的用户列表

javascript - 在 Sequelize 中的关联之间切换(同时一对多和多对多)

node.js - 使用条件对内连接进行 Sequelize

javascript - 我正在尝试在 sequelize 的帮助下将 mysql 数据库与 node.js 连接,但我显示访问被拒绝

mysql - Sequelize.query 执行前的 Nodejs res.status

javascript - 未处理的PromiseRejection警告: TypeError: Assignment to constant variable

sqlite - Sequelize autoIncrement 和 SQLite