typescript - 如何修复找不到数据类型 text[] 错误的数组类型
问题描述
我尝试了以下查找数组中的项目
import {Any} from "typeorm";
const loadedPosts = await connection.getRepository(Post).find({
countries: Any(["Sri Lanka", "Nepal"])
});
但我收到此错误 [QueryFailedError] 找不到数据类型文本的数组类型 []
我的实体列这样定义
@IsNotEmpty()
@Column("text", {array: true})
public countries: string[];
解决方案
如果我正确理解您的问题,则您有一个 Post 实体,其countries
列类型为text[]
。然后,您尝试查找至少包含以下国家之一的帖子:“斯里兰卡”或“尼泊尔”。
这不是 TypeORM 问题。目前在 PostgreSQL 中不可能使用两个数组和ANY()
函数找到具有此类交集的任何记录。而是尝试使用数组运算符,例如@>
.
请在以下类似问题中查看 Sudharsan Thumatti 答案的最后一部分: https ://stackoverflow.com/a/54069718/3298175
请注意,数组函数并不总是像人们期望的那样高效。也许你最好使用第二个表countries
,它有一个外键来代替,创建一个一对多的关系。如果您更喜欢多对多关系,联结表也会有所帮助,允许您重用该countries
表。
推荐阅读
- docker - 关于 Docker 内容信任文档中的一段的问题(关于签署图像)
- r - 在 Shiny 中重置 FileInputi
- p5.js - p5.js 运行代码时出现黑屏
- google-sheets - 双引号字符上的REGEXMATCH?
- c++ - 关于 clang-format 规则:“public:应该在类内缩进 +1 个空格”
- r - 带多列的条形图
- c - 是否可以不使用OpenGL之类的图形库直接调用图形驱动程序?
- kivy - 有没有办法用按钮和文本框移动 kivy 滑块?
- javascript - 为什么 NodeJs 集群模块不起作用?
- c++ - 如何访问加载到 ID3D11ShaderResourceView 中的动画 GIF 的各个帧?