TypeORM 中 .limit() 和 .take() 的区别

Difference between .limit() and .take() in TypeORM

我对具有相似目的的不同 TypeORM 方法感到困惑。来自 TypeORM 文档:

我不太明白“分页limit/offset”是什么意思。但是,不幸的是,我找不到任何关于区分 .take().limit() 的信息。我决定在 TypeORM 的源代码中查看这些方法的描述:

为什么这两种方法不能用于分页?那他们的目的是什么?拜托,任何人都可以为我提供使用所有这 4 种方法的清晰示例吗?提前致谢。

不同之处在于takeskip将不是您要执行的查询的一部分,typeorm在获得结果后执行它。当您的查询包含任何类型的连接时,这总体上是有用的,因为结果不像我们的 TypeORM 映射。

另一方面,limitoffset 包含在查询中,但如果您使用联接,则可能无法按预期工作。例如,如果您有一个与 B 具有 OneToMany 关系的实体 A,并且您尝试获取 A 上的前三个条目(使用限制 3)并与 B 进行连接,如果第一个条目有 3 个 B,那么您将只拿一个A。

看一下说明,如果用offset可以看到(limit也一样)