【问题标题】:How can I get soft deleted entity from typeorm postgreSQL?如何从 typeorm postgreSQL 中获取软删除的实体?
【发布时间】:2021-01-27 22:00:42
【问题描述】:

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

根据文档,它应该只为deletedAt 设置时间戳,而且它确实有效,因为我可以使用查询生成器中的 update where 更新相同的记录。

【问题讨论】:

    标签: node.js typescript postgresql express typeorm


    【解决方案1】:

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

    例子

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

    【讨论】:

    • 这太棒了!谢谢。在我需要的时候会帮助我,但我以后一定会记得的:)
    【解决方案2】:
    const queryBuilder = await this.yourRepository.createQueryBuilder('entity');
    queryBuilder.withDeleted();
    queryBuilder.where(`entity.deleted_at IS NOT NULL`)};
    

    【讨论】:

      【解决方案3】:

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

      例如:

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

        • 这很奇怪。您提出的解决方案不是唯一的解决方案
        • 是的,我已经提出了一个我自己找到的解决方案,但是一个月后更好的答案来了,我接受了@BunyamiN 的新解决方案。
        猜你喜欢
        • 2020-06-17
        • 1970-01-01
        • 2019-12-25
        • 2017-06-04
        • 2022-01-07
        • 2021-02-03
        • 2020-01-03
        • 1970-01-01
        • 2020-10-22
        相关资源
        最近更新 更多