yarn add @atls/nestjs-dataloader
- Импортируйте DataLoaderModule в ваш модуль:
import { DataLoaderModule } from '@atls/nestjs-dataloader'
@Module({
imports: [DataLoaderModule],
})
export class AppModule {}
- Создайте свой кастомный DataLoader:
import * as DataLoader from 'dataloader'
import { Injectable } from '@nestjs/common'
@Injectable()
export class MyDataLoader extends DataLoader<string, string> {
constructor() {
super(async (keys: string[]) => {
/ Ваш код для загрузки данных пачками
})
}
}
- Зарегистрируйте ваш DataLoader в провайдерах:
import { MyDataLoader } from './my-dataloader'
@Module({
providers: [MyDataLoader],
})
export class AppModule {}
- Инжектируйте DataLoader в резолверы и сервисы:
import { MyDataLoader } from './my-dataloader'
@Injectable()
export class MyService {
constructor(private readonly dataLoader: MyDataLoader) {}
async getData(key: string) {
return this.dataLoader.load(key)
}
}