如何从Typeorm PostgreSQL获取软删除的实体?

时间:2020-10-13 14:36:36

标签: node.js typescript postgresql express typeorm

我正在尝试使用postgreSQL typeorm方法从find, findOne or query builder get/getMany数据库中获取软删除的文档,但是它总是返回未定义的。有没有办法获取删除的值?

在文档中,它仅应为deletedAt设置时间戳,并且绝对可以,因为我可以使用查询构建器中的update where更新相同的记录。

4 个答案:

答案 0 :(得分:2)

我发现还有另一种解决方案。您可以使用querybuilders .withDeleted()方法还返回软删除的实体。

示例

 const query = await this.manager
        .getRepository(FolderEntity)
        .createQueryBuilder('folder')
        .leftJoinAndSelect('folder.subStatus', 'status')
        .withDeleted() 
        .getMany()

答案 1 :(得分:2)

实际上指的是 findOptions doc,您可以传递 withDeleted 布尔值来检索软删除的行。

例如:

const result = await this.repo.find({ where: { id }, withDeleted: true })

答案 2 :(得分:0)

const queryBuilder = await this.yourRepository.createQueryBuilder('entity');
queryBuilder.withDeleted();
queryBuilder.where(`entity.deleted_at IS NOT NULL`)};

答案 3 :(得分:-1)

经过更多搜索后,我发现唯一的解决方案是使用原始sql查询,如typeorm docs在查询块中所示。

const deletedEntity = await connection
    .getRepository(Entity)
    .query(`SELECT * FROM Entity where id = '${deletedEntityId}'`)

此查询返回带有deleteAt时间戳记的值。