javascript - Typeorm 尝试更新不存在的实体
所以我正在尝试运行这段代码:
const entities = await this.repository.createQueryBuilder(User)
.leftJoinAndSelect(`User.photos`, 'photos') // One-to-many
.leftJoinAndSelect('photos.status', 'photoStatus') // One-to-one
.where('photoStatus.status = :status', { status: PhotoEnum.READY_TO_SEND })
.getMany();
然后对每个用户在 PhotoStatus 实体中执行一些操作以更新状态。假设我已经将状态更新为新的状态,然后我运行这段代码:
const userEntities = aggregates.map(aggregate => aggregate.userEntity);
if (tr) {
await tr.save(userEntities);
return;
}
await this.repository.save(userEntities)
在我的数据库中,我有一个用户有两张照片,只有第一张照片有状态,另一张没有。当我记录 userEntities 时,我看到一个实体附带一张照片。但当我对这些实体批量执行保存操作时,我遇到 typeorm 也试图更新另一张没有状态的照片。这会导致很多问题,而且问题在于我无法在聚合中过滤掉这张“看不见的”照片。这里的解决方案是什么?我不想在查询之后再进行过滤。
我写了这个兼职解决方案,但我想从查询中获取所有带照片的所需用户。
const trueEntity = userEntities.filter((e) => {
const entity = e.photos.find((t) =>
t.photoStatus?.status === PhotoEnum.READY_TO_SEND);
if (entity) {
return e;
}
});