#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 не хотели печатать все значения массива.