无法搜索字符变化[]数组列

时间:2019-08-08 09:05:36

标签: postgresql nestjs typeorm

我的postgres数据库表的列位置为字符varying[]。在我的表格的nestjs实体中,我在location列中有以下内容-

 @Column("character varying",{array:true})
    location: string[];

我想做的是搜索已将参数传递为位置的行。 这是原始查询,可为我提供适当的结果-

select * from blogs where language @> '{"Spanish","English"}'

在我的nestjs服务中,如何实现以上查询? 我尝试这样做-

return await this.blogsRepo.find({
  where: [
    {
      location: Any(body.locations)
    }
  ]
})

body.locations是这样的数组-

body.locations = ["Spanish","English"]

上述typeorm解决方案给我以下错误-

  

'找不到数据类型字符变化的数组类型[]'

这可能是什么解决方案?我会喜欢typeorm解决方案,因为我将原始查询的执行作为最后的选择。

预先感谢

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

await this.blogsRepo.find({
  where: `${body.locations} = ANY (location)`,
});

答案 1 :(得分:0)

根据typeorm文档,没有办法/内置与@>运算符等效的typeorm运算符。

因此,实现我想要的唯一方法是生成一个完整的查询,然后使用Repository.query()方法执行该查询。

到目前为止似乎可以正常工作!