node.js - 如何对 typeorm 关系进行递归
问题描述
类别.ts
@Entity('categoryenter code here')
export class Category{
@PrimaryGeneratedColumn({ type: 'int' })
id: Category;
@OneToMany(() => Category, category => category.category,{eager:true})
categoryList: Category[];
@ManyToOne(() => Category, (category) => category.categoryList)
category: Category;
}
Category 实体在上面(mysql)。我想找到一个像这样的所有孩子的类别
await categoryRepo.findOne({
where:{ id: 1 },
relations:['categoryList']
})
但我有一个错误Maximum call stack size exceeded
我该怎么做
解决方案
实际上,正如我所见,您正在尝试制作树数据结构。TypeORM 有一些装饰器。这是一个例子:
import {
Entity, BaseEntity, Column,
PrimaryGeneratedColumn, Tree,
TreeParent, TreeChildren
} from 'typeorm';
@Tree('materialized-path')
@Entity({ name: 'Menu' })
export class Category extends BaseEntity {
@PrimaryGeneratedColumn({ type: 'int' })
id: number;
@Column({ type: 'varchar', length: 50 })
text: string;
// Check bellow
@TreeParent()
parent: Category;
@TreeChildren()
children: Category[];
}
装饰器@Tree()
用于告诉 TypeORM 每个实例都有自己的自引用。每个项目都应该有一个父母,并且应该有几个孩子。可以用装饰器@TreeParent()
和@TreeChildren()
分别设置祖先和后代。查看文档以获取有关可用于@Tree()
装饰器的不同模式的更多详细信息。
推荐阅读
- spring-boot - HTTPOnly Cookie 中的 Spring Boot + Angular 9 JWT 令牌存储
- javascript - 将接口更改为对象类型
- python - 无法从 Flask 连接到 Postgres Docker 容器
- python - 在 PyQt 应用程序中嵌入 aiohttp 服务器
- java - 获取 SQLException:ResultSet 关闭后不允许操作
- c++ - 无法从字符串转换为模板 C2664
- facebook - 无法在开发中测试 Facebook OAuth,因为“有效 OAuth 重定向 URI”不允许 localhost
- python - 仅当标题栏未在 QDockWidget 中浮动时如何删除它
- postgresql - Hassura 容器未连接到在 localhost 上运行的 postgres
- javascript - 在计算最大值和最小值Javascript时得到错误的值