以前,TypeORM存储库可以被扩展并直接注入到服务中,例如:
import { User } from './entities/user.entity';
import { EntityRepository, Repository } from 'typeorm';
@EntityRepository(User)
export class UsersRepo extends Repository<User> {
// my custom repo methods
}
import { Injectable } from '@nestjs/common'
import { UsersRepo } from './users.repo';
@Injectable()
export class UsersService {
constructor(private readonly usersRepo: UsersRepo) {}
}
但是从3.0.0版本开始,TypeORM就不支持通过继承进行仓库扩展。
如何在NestJS 9(依赖于TypeORM 3.+)中实现这样的行为?我想到的唯一解决方案是在服务层添加自定义方法。但我希望将所有与ORM相关的方法(查询、聚合等)保留在存储库层。
4条答案
按热度按时间5sxhfpxr1#
让我直接告诉你:我不知道这是否是一个推荐的解决方案,我不知道TypeORM的作者是否真的考虑过这种方法。但我刚才做的是这样的:
最棒的是:它起作用了:D
我使用:
"@nestjs/typeorm": "^9.0.0"
只是为了让您知道。我会继续检查,如果它没有打破任何东西,但现在,似乎是一个很好的变通办法。
zpf6vheq2#
希望对您有所帮助。在我的用户服务中
用户模块
yeotifhr3#
这个问题在这里解决(类似于这里的其他答案,但更完整):How to do custom repository using TypeORM (MongoDB) in NestJS?
不知道他们为什么不赞成@EntityRepository,因为这更复杂,但它可以工作
mccptt674#
希望对您有所帮助: