TypeORM array is not supported in postgres?

37,456

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.

Source

Share:
37,456
ben berizovsky
Author by

ben berizovsky

Updated on July 09, 2022

Comments

  • ben berizovsky
    ben berizovsky almost 2 years

    I have a column kid_ages which is Integer[]. 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;