Sequelize:在 PostgreSQL 的 JSON 数据类型上使用 $like

Posted

技术标签:

【中文标题】Sequelize:在 PostgreSQL 的 JSON 数据类型上使用 $like【英文标题】:Sequelize: use $like on JSON data type with PostgreSQL 【发布时间】:2016-02-12 12:47:38 【问题描述】:

我在 PostgreSQL 中使用 Sequelize。

我需要构建一个销毁查询,该查询可以在 JSON 数据类型上使用 $like 运算符。

以这个模型定义为例:

var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password');

var Project = sequelize.define('project', 
  name: Sequelize.STRING,
  details: 
    type: Sequelize.JSON,
    defaultValue: 
  ,
);

现在,我希望能够运行查询来销毁所有没有任何详细信息的项目条目:

Project.destroy(
  where: 
    details: 
      $like: ''
    
  
)

但我收到此错误:

[SequelizeDatabaseError: operator does not exist: json ~~ unknown]

那么,有没有办法做到这一点以及如何做到这一点?

谢谢!!

【问题讨论】:

【参考方案1】:

尝试使用:

$like:  $any: ['cat', 'hat'] // LIKE ANY ARRAY['cat', 'hat'] - also works for iLike and notLike

来自docs。

【讨论】:

以上是关于Sequelize:在 PostgreSQL 的 JSON 数据类型上使用 $like的主要内容,如果未能解决你的问题,请参考以下文章

sequelize(和 sequelize-cli)queryInterface.createTable 在 PostgreSQL 上,PK id 类型为 UUID 和 defaultValue:Se

如何使用 Sequelize + PostgreSQL 将项目附加到数组值

如何在 Sequelize 中创建一个表以使用 Node JS 存储在 Postgresql 中

使用 Sequelize.js 和 PostgreSQL 在关联模型上查询 JSONB 字段

使用 Node.js/Sequelize 进行批量插入时 PostgreSQL 崩溃

将数据库替换为 postgreSQL 后,Sequelize 时间比较失败