NestJS中TypeORM TreeRepository的findTrees方法调用报错求助
问题解决:TypeORM TreeRepository.findTrees 不是函数
核心原因
你注入的permissionRepository实际是普通的Repository实例,而非TreeRepository。TypeORM默认不会自动为树形实体关联TreeRepository,必须显式指定。
修复步骤
1. 修改模块中实体的导入配置
在PermissionsModule的TypeOrmModule.forFeature中,显式指定实体对应的仓库类为TreeRepository:
import { TreeRepository } from 'typeorm'; // 先导入TreeRepository @Module({ imports: [ UsersModule, RolesModule, TypeOrmModule.forFeature([ { entity: PermissionEntity, repository: TreeRepository } ]), ], providers: [ { provide: 'PERMISSION_SERVICE', useClass: PermissionsService, }, { provide: 'APP_GUARD', useClass: JwtAuthGuard, }, ], controllers: [PermissionsController], }) export class PermissionsModule {}
2. 验证服务中的注入类型
你的服务中已经将permissionRepository声明为TreeRepository<PermissionEntity>,这部分无需修改,但确保模块配置正确后,注入的实例才会真正拥有findTrees等树形操作方法。
额外说明
- 树形实体的仓库操作(如
findTrees、findDescendants等)只有TreeRepository才提供,普通Repository不包含这些方法。 - 确保你的TypeORM版本与NestJS的
@nestjs/typeorm版本兼容,避免因版本差异导致的API不一致。
内容的提问来源于stack exchange,提问作者Erond
相关产品推荐
相关产品推荐

