NestJs:如何将一个存储库导入另一个存储库?

时间:2021-01-18 18:59:28

标签: nestjs

对于可能是非常业余的问题,我深表歉意。来自 Laravel,这对我来说仍然很困惑,我只是不明白需要什么。

我有一个 DataSet 文件和一个 user.repository.ts 文件。每个都有自己的模块、控制器和服务。我已经成功地为每个实体创建了 CRUD 操作,但现在正在努力实现多对多关系。

在我的 location.repository.ts 文件中,我试图保存相关(多对多)存储库:

user.repository.ts

我不确定如何注入或导入 // user.repository.ts user.locations = await this.locationRepository.findByIds(locations); ... await user.save(); 文件。我尝试了将服务导入每个模块的多种变体。或者将每个模块导入另一个模块。我尝试了不同的版本:

location.repository.ts

或者将 @EntityRepository(User) @EntityRepository(Location) 导入到 LocationService 中。

在 Laravel 中,这将像 UserService

一样“简单”

如何将 $model->sync($relationship); 导入/注入我的 locationRepository?感谢您的任何建议!

1 个答案:

答案 0 :(得分:3)

我认为这个问题与您的 last question 有关,实现它的最简单方法是将 Location 实体添加到您的 UserModule

@Module({
imports:[TypeOrmModule.forFeature([UserRepository,LocationRepository])], // or just Location entity [UserRepository,Location] if you didn't setup a custom LocationRepository

之后,将它注入到你的 userRepo... 服务中

constructor(
    @InjectRepository(LocationRepository)
    private locationRepository: LocationRepository,
    // or just  private locationRepository: Repository<Location>,
  ) {}

在创建方法服务中获取您的位置:

 async  createUser(createUserDto: CreateUserDto) { // usersSrvice
let locations = await this.locationRepository.findByIds(createUserDto.locations);
await this.userRepository.createMethodeName(createUserDto,locations) // add secand 
params for your locations 

如果您有任何其他问题,请随时提出