Найти, где результаты в столбцах из массива имен столбцов в TypeORM - PullRequest
0 голосов
/ 26 октября 2019

На данный момент у меня есть следующий запрос:

return await this.siteRepository.find({
      where: [{ id: Like(`%${q}%`) }, { name: Like(`%${q}%`) }]
    });

Но я хотел бы иметь возможность передать список имен столбцов, которые будут использоваться для запроса из массива, а не записывать каждый изих вручную.

const columns = ["id","name", "lastName", "age"]
const query = {};
return await this.siteRepository.find({
          where: columns.map(column=>{(query[`${column}`] = `Like("%${q}%")}`)})
        });

Возможно ли это вообще? Я начинаю чувствовать, что в настоящее время это не так.

1 Ответ

0 голосов
/ 26 октября 2019

Мне не удалось выполнить то, что я хотел, с помощью методов Repository TypeORM, но мне удалось сделать это с QueryBuilder

Вот мое решение

const res = ['id', 'name'].map(item => `${item} LIKE :q`).join(' OR '); return await this.siteRepository .createQueryBuilder() .where(res, { q: `%${q}%` }) .getMany();

, что дает запрос

SELECT `User`.`id` AS `User_id`, `User`.`name` AS `User_name`, `User`.`lastName` AS `User_lastName`, `User`.`active` AS `User_active` FROM `user` `User` WHERE name LIKE ? OR id LIKE ?

...