gpt4 book ai didi

javascript - 有没有一种优雅的方式使用 TypeORM 在 OneToMany 关系数组中查找一条记录并将其分配给实体中的另一个字段?

转载 作者:行者123 更新时间:2023-12-01 15:42:08 27 4
gpt4 key购买 nike

我正在寻找一种方法来实现一个函数,使用 NestJS 和 TypeORM,它将在 OneToMany 数组中找到一个特定元素并将该值分配给对象中的另一个字段。
最重要的是:在代码中的一个地方实现。

例如:

实体profile有一个 photos 的数组,其中一张照片是头像。
我想在数组中找到那张照片并将其分配给 profilePicture如果存在,则在每个选择查询上。
typeORM 有没有办法在代码中的一个地方实现它?

@Entity('profile')
export class Profile extends BaseEntity {

@PrimaryGeneratedColumn()
id: number;

@OneToMany(type => Photo, photo => photo.profile)
photos?: Photo[];

profilePicture?: Photo;
}

最佳答案

如果您使用查询生成器,则可以使用 leftJoinAndMapOne 来实现。我只是想添加一个示例,但我刚刚发现 TypeORM docs已经为您的用例提供了一个很好的解决方案:

 const user = await createQueryBuilder("user")
.leftJoinAndMapOne("user.profilePhoto", "user.photos", "photo", "photo.isForProfile = TRUE")
.where("user.name = :name", { name: "Timber" })
.getOne();

编辑:或者,您可以使用 Afterload 装饰器在您的实体中设置配置文件:
@AfterLoad()
private setProfile(): void {
this.photos.forEach((photo) => {
if (photo.isForProfile) {
this.photo = value;
}
});
}

关于javascript - 有没有一种优雅的方式使用 TypeORM 在 OneToMany 关系数组中查找一条记录并将其分配给实体中的另一个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61407959/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com