TypeORM array is not supported in postgres?
Solution 1
The docs says, that it should work:
@Column("int", { array: true })
array: number[];
this is from the example https://github.com/typeorm/typeorm/blob/master/test/functional/database-schema/column-types/postgres/entity/Post.ts
In your code the array property is no array.
Have you tried kid_ages: string[];
?
Solution 2
As mentioned above, you can create Postgres' array column with next code:
@Column("int", { array: true })
kid_ages: number[];
If you then need to find some kid with age 5, use this:
kid = getRepository('kid')
.createQueryBuilder()
.where(':kid_age = ANY (kid.kid_ages)', { kid_age: 5 });
Solution 3
For people looking to deal with arrays or string within your entities, based on @thopaw 's answer, you can use the following code:
@Column("text", { array: true })
kid_ages: string[];
Solution 4
I tried all of the solutions already mentioned, but none of them worked. Finally found solution among the Github issues in TypeORM repo.
I quote the solution:
This was a simple fix, the type of the column shouldn't be an array. Changed to this and it now works:
@Column({array: true}) tags: string;
Better documentation on arrays would have been useful.
ben berizovsky
Updated on July 09, 2022Comments
-
ben berizovsky almost 2 years
I have a column
kid_ages
which isInteger[]
. When migrating, I get the following error:DataTypeNotSupportedError: Data type "Array" in "home.kid_ages" is not supported by "postgres" database.
I tried adding the following options to my column:
type: 'array'
and:
array: true, default: [], nullable: false, @Column({ array: true, default: [], nullable: false, }) kid_ages: string;