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

Dam*_*mon 1 nestjs

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

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

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

// user.repository.ts

user.locations = await this.locationRepository.findByIds(locations);
...

await user.save();
Run Code Online (Sandbox Code Playgroud)

我不确定如何注入或导入location.repository.ts文件。我尝试了多种将服务导入到每个模块的方法。或者将每个模块导入另一个模块中。我尝试过不同的版本:

@EntityRepository(User)
@EntityRepository(Location)
Run Code Online (Sandbox Code Playgroud)

或者将其导入LocationServiceUserService.

在 Laravel 中,这就像“简单”一样$model->sync($relationship);

我如何导入/注入locationRepository到我的userRepository?感谢您的任何建议!

You*_*uba 5

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

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

之后,将其注入到您的 userRepo... 服务中

constructor(
    @InjectRepository(LocationRepository)
    private locationRepository: LocationRepository,
    // or just  private locationRepository: Repository<Location>,
  ) {}
Run Code Online (Sandbox Code Playgroud)

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

 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 
Run Code Online (Sandbox Code Playgroud)

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