Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

184
Vistas
PrismaService onModuleInit se llama varias veces en NestJs

Actualmente estoy leyendo la documentación de una aplicación Nest.js usando Prisma. Siguiendo la documentación, he creado el siguiente Servicio.

 import { INestApplication, OnModuleInit } from "@nestjs/common"; import { PrismaClient } from "@prisma/client"; export class PrismaService extends PrismaClient implements OnModuleInit { async onModuleInit() { console.log('onModuleInit PrismaService') await this.$connect(); } async enableShutdownHooks(app: INestApplication){ this.$on('beforeExit', async () => { console.log('PrismaService enableShutdownHooks beforeExit') await app.close(); }); } }

La documentación describe el uso de lo siguiente.

 import { Module } from '@nestjs/common'; import { Prisma } from '@prisma/client'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { CsvParsersModule } from './csv-parsers/csv-parsers.module'; import { PrismaModule } from './prisma/prisma.module'; import { PrismaService } from './prisma/prisma.service'; @Module({ imports: [CsvParsersModule], controllers: [AppController], providers: [AppService, PrismaService] }) export class AppModule {}

Sin embargo, dicho código hará que se llame repetidamente a onModuleInit cuando el Servicio se registre en otro lugar.

 import { Global, Module } from '@nestjs/common'; import { CsvParsersService } from './csv-parsers.service'; import { CsvParsersController } from './csv-parsers.controller'; import { PrismaService } from 'src/prisma/prisma.service'; @Module({ controllers: [CsvParsersController], providers: [CsvParsersService, PrismaService], exports: [CsvParsersService] }) export class CsvParsersModule {}
 [Nest] 78737 - 2022/07/21 8:05:23 LOG [NestFactory] Starting Nest application... [Nest] 78737 - 2022/07/21 8:05:23 LOG [InstanceLoader] AppModule dependencies initialized +25ms [Nest] 78737 - 2022/07/21 8:05:23 LOG [InstanceLoader] CsvParsersModule dependencies initialized +0ms [Nest] 78737 - 2022/07/21 8:05:23 LOG [RoutesResolver] AppController {/}: +8ms [Nest] 78737 - 2022/07/21 8:05:23 LOG [RouterExplorer] Mapped {/, GET} route +1ms [Nest] 78737 - 2022/07/21 8:05:23 LOG [RoutesResolver] CsvParsersController {/csv-parsers}: +0ms [Nest] 78737 - 2022/07/21 8:05:23 LOG [RouterExplorer] Mapped {/csv-parsers, POST} route +0ms onModuleInit PrismaService onModuleInit PrismaService [Nest] 78737 - 2022/07/21 8:05:23 LOG [NestApplication] Nest application successfully started +51ms

Creo que el mejor proceso es que onModuleInit se llame solo una vez. ¿Cómo debería resolverse esto?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

registraste ese servicio dos veces, es por eso que obtuviste dos instancias de la misma clase.

Solo puede agregarlo una vez en algunos de esos módulos y luego exportarlo a otro.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda