Как работает where(свойство В массиве) в построителе запросов typeorm?

#typescript #nestjs #typeorm #query-builder

Вопрос:

Мне нужно использовать построитель запросов для фильтрации идентификаторов сущности по массиву идентификаторов.

Это и есть код:

 await this._productRepo
.createQueryBuilder('Product')
.where('Product.id IN (:...ids)', { ids: [1, 2, 3, 4] })
 

Это sql, сгенерированный этим запросом:

 SELECT [*FIELDS*] WHERE ( `Product`.`id` IN ? ) AND ( `Product`.`deletedAt` IS NULL )
 

Это пример кода, который я нашел в документе typeorm, и я не могу понять, почему существует ? в sql вместо списка идентификаторов.

Мне нужен конструктор запросов, потому что следующим шагом будет фильтрация идентификаторов объединенной таблицы, поэтому я не могу использовать методы репозитория.

Ответ №1:

Решенный.

Приведенный выше синтаксис построителя запросов работает. Проблема заключалась в другой части моего кода репо.

Если у кого-то, похоже, возникла аналогичная проблема, проверьте весь свой код, тот факт, что getSql() сообщает:

 WHERE ( `field`.`property` IN ? )
 

это «нормально», я думаю, потому что разработчики typeorm не хотели печатать все значения массива.