首页 > 解决方案 > 带有 Sequelize Cast 的 uuid v4 类型列上的 ILIKE 运算符

问题描述

我正在尝试在 postgres v10 中的 uuid 类型列上运行 ILIKE 运算符。像这样的东西,

select * from users where id ILIKE '%0%';

但正如我们都知道的那样,这是行不通的。所以我尝试将其转换为varchar并再次尝试使用类似这样的查询。

select * from workspace_columns where id::varchar ILIKE '%0%';

瞧,它奏效了。现在我必须使用 Sequelize(节点 js 的 ORM)执行类似的操作。我找到了解决方案,但他们都在使用 sequelize.cast 函数,我不能使用它,因为我当前的代码正在使用 params 方法。像这样的东西: -

model.findAndCountAll(params || {})

其中 params 是一个 js 对象。

在做 ILike 之前,我是否可以通过某种方式传递我想投给这个专栏的信息?

也许是这样的: -

{ where : { Sequelize.cast('name', 'varchar'): { [Sequelize.Op.iLike] : '%w%'} } }

标签: sqlnode.jspostgresqlsequelize.js

解决方案


你可以尝试使用原始 sql

sequelize.query("select * from workspace_columns where id::varchar ILIKE :search_name",{ replacements: { search_name: 'ben%'  }, type: sequelize.QueryTypes.SELECT,model: Projects,mapToModel: true  }).then(projects => {console.log(projects)}

推荐阅读