TypeORM 获取 jsonb 数组中 id 的数据

问题描述 投票:0回答:2

我有一个实体:

@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 练习 id 为 1 的实体。

abdul Samad 回答后,我尝试了这个:

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

这将返回一个空数组。应该返回一些东西。

nestjs typeorm
2个回答
0
投票
this.createQueryBuilder('training')
      .where('workoutExercises->>id IN (:exerciseId)', { exerciseId })
      .getMany();

希望这会起作用:)。


0
投票
this.createQueryBuilder('training')
    .select()
    .where('training.workoutExercises ::jsonb @> :workoutExercises', { workoutExercises: JSON.stringify([{ id: exerciseId }]) })
    .execute();

有类似情况,试试这个!

© www.soinside.com 2019 - 2024. All rights reserved.