Если вы используете построитель запросов, вы можете добиться этого с помощью leftJoinAndMapOne. Я просто хотел добавить пример, но я только что узнал, что Документы TypeORM уже имеют хорошее решение для вашего случая использования:
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;
}
});
}