Last updated
Last updated
TypeORM支持用于存储树结构的Adjacency列表和Closure表模式。 要了解有关层次结构表的更多信息,请查看。
邻接列表是一个具有自引用的简单模型。 这种方法的好处是简单,缺点是由于连接限制,您无法一次性加载整个树结构。 要了解有关邻接列表的好处和用途的更多信息,请参阅 .
例如::
嵌套集是在数据库中存储树结构的另一种模式。 它对读取非常有效,但对写入不利。 且不能在嵌套集中有多个根。 例如:
物化路径(也称为路径枚举)是在数据库中存储树结构的另一种模式。 它简单有效。 例如:
闭合表以特殊方式在单独的表中存储父和子之间的关系。 它在读取和写入方面都很有效。 例如:
要使绑定树实体彼此关系,将其父项设置为子实体并保存它们很重要 例如:
加载树时使用TreeRepository
:
trees
如下:
还有其他一些特殊的方法可以处理树形实体,比如TreeRepository
:
findTrees
- 返回数据库中所有树,包括所有子项,子项的子项等。
findRoots
- 根节点是没有祖先的实体。 找到所有根节点但不加载子节点。
findDescendants
- 获取给定实体的所有子项(后代)。 将它们全部返回到数组中。
findDescendantsTree
- 获取给定实体的所有子项(后代)。
createDescendantsQueryBuilder
- 创建用于获取树中实体的后代的查询构建器。
countDescendants
- 获取实体的后代数。
findAncestors
- 获取给定实体的所有父(祖先)。 将它们全部返回到数组中。
findAncestorsTree
- Gets all parent (ancestors) of the given entity. Returns them in a tree - nested into each other.
createAncestorsQueryBuilder
- 创建用于获取树中实体的祖先的查询构建器。
countAncestors
- 获取实体的祖先数。