【发布时间】:2020-12-19 02:52:41
【问题描述】:
我正在尝试找出使用 type-graphql 和 typeorm 与 postgresql db 处理一对多关系的最佳方法(使用带有 express 的 apollo 服务器)。我有一个与课程表具有一对多关系的用户表。我目前处理此问题的方式是使用@RelationId 字段创建一列userCourseIds,然后使用@FieldResolver 和dataloader 批量获取属于该用户的课程。我的问题是使用@RelationId 字段,无论我是否实际查询userCourses,都会进行单独的查询来获取relationids。有没有办法在不进行额外查询的情况下处理这个问题,或者有更好的方法来处理一对多关系?
关系的用户方:
@OneToMany(() => Course, (course) => course.creator, { cascade: true })
userCourses: Course[];
@RelationId((user: User) => user.userCourses)
userCourseIds: string;
课程方面的关系:
@Field()
@Column()
creatorId: string;
@ManyToOne(() => User, (user) => user.userCourses)
creator: User;
userCourses 字段解析器:
@FieldResolver(() => [Course], { nullable: true })
async userCourses(@Root() user: User, @Ctx() { courseLoader }: MyContext) {
const userCourses = await courseLoader.loadMany(user.userCourseIds);
return userCourses;
}
【问题讨论】:
标签: express graphql typeorm dataloader typegraphql