我对具有相似目的的不同 TypeORM 方法感到困惑。来自 TypeORM 文档:
-
.take()
— 分页限制。设置要获取的最大实体数。
-
.skip()
— 分页偏移量。设置要跳过的实体数量。
我不太理解“分页限制/偏移”的含义。但是,不幸的是,我找不到任何有关区分的信息,例如,.take()
and .limit()
。我决定在 TypeORM 的源代码中查看这些方法的描述:
-
.limit()
— 设置的 LIMIT - 要选择的最大行数。请注意,如果您使用联接,它可能不会按您预期的方式工作。如果您想实现分页,并且您的查询中有 join,那么请使用 take 方法。
-
.offset()
— 设置的 OFFSET - 选择偏移。请注意,如果您使用联接,它可能不会按您预期的方式工作。如果您想实现分页,并且您的查询中有 join,那么请使用skip 方法。
为什么这两种方法不能用于分页呢?那么他们的目的是什么?请问谁能给我提供使用这 4 种方法的清晰示例吗?提前致谢。
不同之处在于take
and skip
将不是您将执行的查询的一部分,请在获得结果后键入或执行它。当您的查询包含任何类型的联接时,这总体上是有用的,因为结果与我们的 TypeORM 映射不同。
另一方面,limit
and offset
包含在查询中,但如果您使用联接,则可能无法按预期工作。例如,如果您有一个与 B 具有 OneToMany 关系的实体 A,并且您尝试获取 A 上的前三个条目(使用限制 3)并与 B 进行连接,如果第一个条目有 3 个 B,那么您将只得到一个A。
看一下描述,我们可以看到如果我们使用offset(与limit相同)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)