TypeORM получить данные, где идентификатор в массиве jsonb

#nestjs #typeorm

Вопрос:

У меня есть одна сущность :

 @Entity() export class Training {  @PrimaryGeneratedColumn()  id: number;   @Column('jsonb')  workoutExercises: Exercise[]; }  

Сущность упражнения:

 @Entity() export class Exercise {  @PrimaryGeneratedColumn()  id: number;   @Column()  name: string; }  

Пример данных :

 [  {  "workoutName": "Monday",  "workoutExercises": [  {  "id": 1,  "sets": 4,  "weight": 100,  "repetitions": 10  }  ],  },  {  "workoutName": "Sunday",  "workoutExercises": [  {  "id": 2,  "sets": 4,  "weight": 100,  "repetitions": 10  }  ],  } ]  

Я хотел бы найти объект с идентификатором упражнение id 1.

После ответа абдула Самада я попробовал это :

 this.createQueryBuilder('training')  .where(`:exerciseId IN ("training"."workoutExercises"-gt;gt;id)`, {  exerciseId,  })  .getMany();  

Это возвращает мне пустой массив. Надо было что-то вернуть.

Ответ №1:

 this.createQueryBuilder('training')  .where('workoutExercises-gt;gt;id IN (:exerciseId)', { exerciseId })  .getMany();  

надеюсь, это сработает :).

Комментарии:

1. Это возвращает мне новую ошибку, в которой говорится, что «столбец «workoutexercises» не существует». Дальше больше не должно быть чего-то подобного .where(':exerciseId IN (workoutExercises-gt;gt;id)', { exerciseId }) ? exerciseId-это идентификатор, а workoutExercises-это набор упражнений.