如何从 typeorm postgreSQL 中获取软删除的实体?
Posted
技术标签:
【中文标题】如何从 typeorm postgreSQL 中获取软删除的实体?【英文标题】:How can I get soft deleted entity from typeorm postgreSQL? 【发布时间】:2021-01-27 22:00:42 【问题描述】:我正在尝试使用 typeorm
find, findOne or query builder get/getMany
方法从 postgreSQL
数据库中获取软删除的文档,但它总是返回未定义的。有没有办法获得删除的价值?
根据文档,它应该只为deletedAt
设置时间戳,而且它确实有效,因为我可以使用查询生成器中的 update where 更新相同的记录。
【问题讨论】:
【参考方案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 的新解决方案。以上是关于如何从 typeorm postgreSQL 中获取软删除的实体?的主要内容,如果未能解决你的问题,请参考以下文章
PostgreSQL 与 TypeORM 错误“在 \"Sep\" 处或附近出现语法错误”
如何为 postgresql MATERIALIZED VIEW 创建 typeorm 实体
是否可以使用 typeorm 在 postgresql 中使用数字数组?