【问题标题】:How to fix could not find array type for data type text[] error如何修复找不到数据类型 text[] 错误的数组类型
【发布时间】:2020-07-29 06:42:00
【问题描述】:

我已经尝试在数组中查找项目

import {Any} from "typeorm";

const loadedPosts = await connection.getRepository(Post).find({
    countries: Any(["Sri Lanka", "Nepal"])
});

但我收到此错误 [QueryFailedError] 找不到数据类型 text[] 的数组类型

我的实体列是这样定义的

@IsNotEmpty()
@Column("text", {array: true})
public countries: string[];

【问题讨论】:

    标签: typescript postgresql typeorm


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 但根据文档,他们有任何选项github.com/typeorm/typeorm/blob/master/docs/…
    • 没错,但你不能在已经是数组的字段上使用它。现在您正在检查是否存在等于以下文本之一的数组。这种比较是有缺陷的,会导致错误。如果 Post 的字段是 text 类型的单个国家/地区,它会起作用,但它不适用于数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2018-09-11
    相关资源
    最近更新 更多