如何在不加载TypeORM中整个子实体的情况下获取子实体id?

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

我有以下型号:

@Entity('user')
class UserModel {
    @PrimaryColumn({
        name: 'id',
        type: 'varchar',
    })
    id: Ulid = generate()

    ...

    @OneToMany(() => CourseModel, (course) => course.author)
    courses?: CourseModel[]
}

@Entity('course')
class CourseModel {
    @PrimaryColumn({
        name: 'id',
        type: 'varchar',
    })
    id: Ulid = generate()

    ...

    @ManyToOne(() => UserModel, (user) => user.courses)
    user?: UserModel
}

我需要查询用户并收到类似这样的信息:

{
    id: '...',
    ...
    courseIds: ['...', '...', etc...]
}

在 TypeORM 中我找不到任何加载

courseIds
的选项,只有
courses
。是否有一个选项可以在没有查询生成器的情况下执行此操作?

我尝试在 User 类中创建一个 getter,但它仍然需要加载所有用户。我也尝试过 queryBuilder 并且它有效,但它可能不是最好的解决方案。必须有一种方法可以在没有查询生成器的情况下完成它

typescript typeorm
1个回答
0
投票

我发现@RelationId装饰器适合这个。

只需使用:

@OneToMany(() => CourseModel, (course) => course.author)
courses?: CourseModel[]

@RelationId((course) => course.author)
courseIds: string[]
© www.soinside.com 2019 - 2024. All rights reserved.