#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-это набор упражнений.