Den*_*kin 21 query-builder node.js typeorm
我对具有相似目的的不同 TypeORM 方法感到困惑。来自 TypeORM 文档:
\n.take()\xe2\x80\x94 分页限制。设置要获取的最大实体数。.skip()\xe2\x80\x94 分页偏移量。设置要跳过的实体数量。我不太理解“分页限制/偏移”的含义。但是,不幸的是,我找不到任何有关区分的信息,例如.take(),.limit()信息。我决定在 TypeORM 的源代码中查看这些方法的描述:
.limit()\xe2\x80\x94 设置 LIMIT - 要选择的最大行数。请注意,如果您使用联接,它可能不会按您预期的方式工作。如果您想实现分页,并且您的查询中有 join,那么请使用 take 方法。.offset()\xe2\x80\x94 设置的 OFFSET - 选择偏移。请注意,如果您使用联接,它可能不会按您预期的方式工作。如果您想实现分页,并且您的查询中有 join,那么请使用skip 方法。为什么这两种方法不能用于分页呢?那么他们的目的是什么?请问谁能给我提供使用这 4 种方法的清晰示例吗?提前致谢。
\n小智 24
不同之处在于,take和skip不会成为您将执行的查询的一部分,typeorm 在获得结果后执行它。当您的查询包含任何类型的联接时,这总体上是有用的,因为结果与我们的 TypeORM 映射不同。
另一方面,limit和offset包含在查询中,但如果您使用联接,则可能无法按您的预期工作。例如,如果您有一个与 B 具有 OneToMany 关系的实体 A,并且您尝试获取 A 上的前三个条目(使用限制 3)并与 B 进行连接,如果第一个条目有 3 个 B,那么您将只得到一个A。
看一下描述,我们可以看到如果我们使用offset(与limit相同)
| 归档时间: |
|
| 查看次数: |
15783 次 |
| 最近记录: |