Как создать запрос, используя конструктор запросов typeorm для фильтрации данных из базы данных? - PullRequest
1 голос
/ 20 марта 2020

Я просто новичок в typeorm, я использую nodejs / nest js, я пытаюсь создать запрос, в котором данные из базы данных, являющиеся курсом, могут быть отфильтрованы инструктором, который является именем и фамилией, filter по имени_курса и отфильтруйте курсы по теме. Я пытался использовать «где» и «или где», но, кажется, не могу обернуть вещи, Кто-нибудь может дать совет о лучшей реализации? Спасибо. Очень признателен.

Запрос ниже работает, у меня возникли проблемы с условием "где"

Код

async findAll(options: IPaginationOptions, query): Promise<Pagination<CourseEntity>> {
    console.log('query :', query);
    const courses = await getRepository(CourseEntity)
      .createQueryBuilder('course')
      .leftJoinAndSelect('course.user', 'user')
      .leftJoinAndSelect('course.subject', 'subject')
      // eslint-disable-next-line @typescript-eslint/camelcase
      .where('course.course_name = :course_name', { course_name: query.course_name });

    return paginate<CourseEntity>(courses, options);
  }

здесь есть параметр запроса

query : { limit: '10', firstname: 'mark', lastname: 'gunn' , course_name: 'Comscie'}

Пример данных из базы данных

 {
            "id": 4,
            "course_name": "BS-IT",
            "description": "BS-IT DBMS",
            "created": "2020-03-19T16:40:46.000Z",
            "updated": "2020-03-19T16:40:46.000Z",
            "user": {
                "id": 20,
                "firstname": "Mark",
                "lastname": "Gunn",
                "role": "Instructor",
                "email": "mark@gmail.com",
                "isActive": false,
                "created": "2020-03-19T16:06:21.000Z",
                "updated": "2020-03-19T16:06:34.000Z"
            },
            "subject": {
                "id": 2,
                "subject_name": "IT 100",
                "description": "Fundamandetals",
                "created": "2020-03-18T03:58:34.000Z",
                "updated": "2020-03-18T03:58:34.000Z"
            }
        }

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Для моего проекта с Typeorm я предпочитаю использовать объект параметров поиска (https://typeorm.io/# / find-options ), потому что проще генерировать запрос из объекта, но вы не можете выполнить какое-либо расширенное объединение (но в вашем случае все нормально)

Они не лучшая реализация, просто несколько решений.

0 голосов
/ 20 марта 2020

выглядит хорошо. Просто добавьте другие условия с помощью andWhere

...