首页 > 解决方案 > 如何修复找不到数据类型 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[];

标签: typescriptpostgresqltypeorm

解决方案


如果我正确理解您的问题,则您有一个 Post 实体,其countries列类型为text[]。然后,您尝试查找至少包含以下国家之一的帖子:“斯里兰卡”或“尼泊尔”。

这不是 TypeORM 问题。目前在 PostgreSQL 中不可能使用两个数组和ANY()函数找到具有此类交集的任何记录。而是尝试使用数组运算符,例如@>.

请在以下类似问题中查看 Sudharsan Thumatti 答案的最后一部分: https ://stackoverflow.com/a/54069718/3298175

请注意,数组函数并不总是像人们期望的那样高效。也许你最好使用第二个表countries,它有一个外键来代替,创建一个一对多的关系。如果您更喜欢多对多关系,联结表也会有所帮助,允许您重用该countries表。


推荐阅读