@destyk

Как использовать модель внутри useFactory | NestJs?

Приветствую. Суть вопроса такова: как использовать различные сервисы моделей в 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.

Однако, во всех других местах приложения модели работают отлично, включая эту. Есть какие-нибудь мысли для решения этой проблемы?

Заранее благодарю!
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov
Помог ответ? Отметь решением.
здесь мне нужно вызвать proxyService.find()

Что-то у вас пошло не так, раз появилась такая необходимость )) Так не работает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы