网站搜索

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;
      }
    });