postgresql Postgres中不支持TypeORM数组?

fquxozlt  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(7)|浏览(155)

kid_agesInteger[]。迁移时,我得到以下错误:
DataTypeNotSupportedError: Data type "Array" in "home.kid_ages" is not supported by "postgres" database.
我尝试在我的列中添加以下选项:

type: 'array'

字符串
以及:

array: true,
default: [],
nullable: false,

@Column({
  array: true,
  default: [],
  nullable: false,
})
kid_ages: string;

ifsvaxew

ifsvaxew1#

Docs说,它应该工作:

@Column("int", { array: true })
array: number[];

字符串
这来自示例https://github.com/typeorm/typeorm/blob/master/test/functional/database-schema/column-types/postgres/entity/Post.ts
在代码中,数组属性为无数组。你试过kid_ages: string[];吗?

toiithl6

toiithl62#

对于那些希望在实体中处理数组或字符串的人,根据@thopaw的答案,可以使用以下代码:

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

字符串

kmpatx3s

kmpatx3s3#

如上所述,你可以用下面的代码创建Postgres的数组列:

@Column("int", { array: true })
kid_ages: number[];

字符串
如果你需要找一个5岁的孩子,用这个:

kid = getRepository('kid')
        .createQueryBuilder()
        .where(':kid_age = ANY (kid.kid_ages)', { kid_age: 5 });

hsvhsicv

hsvhsicv4#

我尝试了前面提到的所有解决方案,但都不起作用。最终在TypeORM repo中找到了Github问题的解决方案。
我引用这个解决方案:
这是一个简单的修复,列的类型不应该是数组。更改为这个,它现在工作:

@Column({array: true})
tags: string;

字符串
更好的数组文档会很有用。
来源

ohfgkhjo

ohfgkhjo5#

我的Postgres检查数组包含的解决方案如下:
我将列定义如下:

@Column("text", { array: true, default: "{}" })
    tags: string[];

个字符
“getFindQueryBuilder”:是一个获取共享SelectQueryBuilder以保存代码的函数。
这里重要的部分是我在示例中显示的where子句。

0ve6wy6x

0ve6wy6x6#

这里要注意的重要一点是,即使声明了整数数组,默认值也应该定义为空对象。

@Column("int", { array: true, default: {} })
ages: Number[];

字符串

brccelvz

brccelvz7#

对于array,可以使用simple-array作为类型

相关问题