【发布时间】:2021-05-10 12:06:01
【问题描述】:
我想生成如下 postgres 查询:
select * from table1 t1 inner join table2 t2 on t1.id = t2.table1_id
where param.name is null or t1.name ilike param.name
这里的param是请求参数
我试过这个:
await this.userRepository.createQueryBuilder("t1")
.innerJoinAndSelect("t1.table2","t2")
.where("t1.name ilike :name or :name is null",{ name:`%${request.body.name}%`)
.getMany()
这会返回以下错误:
QueryFailedError: 无法确定参数 $2 的数据类型
【问题讨论】:
-
可能 Postgres 无法确定 :name 的类型。由于它与 ilike 部分中的文本进行比较,它会自动转换,但您可能需要这样做 .... cast(:name as text) is null .... 因为 null 没有要转换的类型。只是一个建议。
标签: node.js typescript postgresql typeorm