(TypeORM) Как использовать параметр в конструкторе sql ARRAY [] в QueryBuilder.where? - PullRequest
0 голосов
/ 12 февраля 2020

Я получаю этот объект запроса:

{ 
  name: string[],
}

И у меня есть объект со следующими столбцами:

@Column()
country: string;
@Column('text', {array: true})
name: string[];

Мне нужно проверить, содержится ли массив имен запроса в столбец имени в запросе. Это работает в PostgreSQL:

SELECT *
FROM my_table
where name <@ ARRAY['name1','name2', 'name3']

Если мой объект запроса будет выглядеть как

{
  name: ["name1", "name2", "name3"]
}

Я бы ожидал, что следующий построитель запросов воспроизведет тот же результат, что и запрос Postgres :

const queryBuilder = this.my_repository.createQueryBuilder();
queryBuilder.where(`name <@ ARRAY[:name_request]`, { name_request: request.name });
queryBuilder.getMany();

Но он не находит никаких результатов, поэтому я предполагаю, что он не строит часть "ARRAY ['name1', 'name2', 'name3']".

Я уже пытался напечатать queryBuilder.get SQL (), чтобы проверить, как формировался запрос, но он не покажет мне, как он подставил параметр name_request (он просто показывает $ 1). Я также попытался добавить различные комбинации кавычек вокруг значений и явно подставить каждое значение имени в строку where, но это все равно не будет работать.

Я использую @ nestjs / typeorm 6.2.0.

Есть какие-нибудь советы?

...