Приветствую. Суть вопроса такова: как использовать различные сервисы моделей в
useFactory?
Использую сейчас так:
crawlers.module.ts:
@Module({
imports: [
PuppeteerModule.forRootAsync({
imports: [ProxyModule],
useFactory: async (proxyService: ProxyService) => {
// здесь мне нужно вызвать proxyService.find()
return {
launchOptions: {
args: ['--no-sandbox', '--disable-setuid-sandbox', '--mute-audio'],
},
};
},
inject: [ProxyService],
}),
],
})
export class CrawlersModule {}
proxy.service.ts:
@Injectable()
export class ProxyService {
constructor(
@Inject(PROXIES_REPOSITORY)
private readonly proxiesRepository: typeof ProxyEntity,
) {}
async get(): Promise<ProxyEntity> {
return this.proxiesRepository.findOne();
}
}
proxy.module.ts:
@Module({
imports: [DatabaseModule],
providers: [...ProxiesProviders, ProxyService],
exports: [ProxyService],
})
export class ProxyModule {}
proxies.provider.ts:
export const ProxiesProviders = [
{
provide: PROXIES_REPOSITORY,
useValue: ProxyEntity,
},
];
proxy.entity.ts:
@Table()
export class ProxyEntity extends Model<ProxyEntity> {
@Column({
type: DataType.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false,
})
id: number;
@Column({
type: DataType.STRING(40),
allowNull: false,
})
ip: string;
@Column({
type: DataType.INTEGER,
allowNull: false,
})
port: number;
@Column({
type: DataType.STRING(50),
allowNull: true,
defaultValue: null,
})
username: string;
@Column({
type: DataType.STRING(50),
allowNull: true,
defaultValue: null,
})
password: string;
}
Но в результате получаю такую ошибку:
[Nest] ERROR [ExceptionHandler] Model not initialized: Member "findOne" cannot be called. "ProxyEntity" needs to be added to a Sequelize instance.
Однако, во всех других местах приложения модели работают отлично, включая эту. Есть какие-нибудь мысли для решения этой проблемы?
Заранее благодарю!