TypeORM 的类型不匹配

Type mismatch at TypeORM

我想使用 TypeORM 在 Postgres 的数组中搜索 cookieId。 这个问题的答案在这里给出:How do I query an array in TypeORM

然而,当我实现代码时:

user = await this.usersRepository
      .createQueryBuilder('user')
      .where('user.userCookieIds @> ARRAY[:cookieId]', {cookieId: userCookieId})
      .getOne();

相关实体是:

@Column("varchar", { array: true })
  userCookieIds: string[];

我收到一个错误: QueryFailedError: operator does not exist: character varying[] @> text[]

在这种情况下,我如何在 postgres 中指定 cookieId 的类型,所以它也将是 varchar

您应该能够将值转换为正确的类型:

user = await this.usersRepository
      .createQueryBuilder('user')
      .where('user.userCookieIds @> ARRAY[:cookieId]::varchar[]', {cookieId: userCookieId})
      .getOne();

您还可以更改您的列以使用文本数组而不是 varchar: