树实体
TypeORM支持用于存储树结构的Adjacency列表和Closure表模式。 要了解有关层次结构表的更多信息,请查看this awesome presentation by Bill Karwin。
邻接清单
邻接列表是一个具有自引用的简单模型。 这种方法的好处是简单,缺点是由于连接限制,您无法一次性加载整个树结构。 要了解有关邻接列表的好处和用途的更多信息,请参阅 this article by Matthew Schinckel.
例如::
import {Entity, Column, PrimaryGeneratedColumn, ManyToOne, OneToMany} from "typeorm";
@Entity()
export class Category {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
description: string;
@ManyToOne(type => Category, category => category.children)
parent: Category;
@OneToMany(type => Category, category => category.parent)
children: Category[];
}
嵌套集
嵌套集是在数据库中存储树结构的另一种模式。 它对读取非常有效,但对写入不利。 且不能在嵌套集中有多个根。 例如:
import {Entity, Tree, Column, PrimaryGeneratedColumn, TreeChildren, TreeParent, TreeLevelColumn} from "typeorm";
@Entity()
@Tree("nested-set")
export class Category {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@TreeChildren()
children: Category[];
@TreeParent()
parent: Category;
}