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

261
Vistas
TypeORM createQueryBuilder: es posible usar el nombre de la tabla como cadena en lugar de entidad

En mi escenario actual, un tercero creará tablas dinámicamente en mi base de datos y almacenará el nombre de la tabla como varchar y los nombres de las columnas como jsonb en otra tabla que se define como una Entidad en mi backend de NestJS.

Esto es para que pueda realizar un seguimiento (y consultar) estas tablas, ya que no tengo control sobre su creación.

Para este propósito, me gustaría usar createQueryBuilder de createQueryBuilder en lugar de usar consultas sin procesar, ya que me resulta más fácil jugar con la abstracción.

Por lo que sé, TypeORMs createQueryBuilder necesita una Entidad definida en la cláusula from .

Algo como esto:

 return await getManager() .createQueryBuilder() .select('*') .from(MyDefinedModel, 'modelAlias') .getRawMany(); }

Así que me gustaría hacer algo como:

 const tableName = await getDynamicallyGenetaredTableNames().getFirstOne() // now tableName points to a string that is a table name, ie 'table-data-192239' return await getManager() .createQueryBuilder() .select('*') .from(tableName, 'tableAlias') .getRawMany();

Entonces, al pasar el nombre de la tabla, señalo la tabla correcta, pero TypeORM (y TS) se quejan porque tableName es una cadena y no un tipo de entidad (clase).

Realmente no quiero encasillar y empezar a hacer cosas desagradables si hay algo más limpio para lograr esto. No encontré ninguna solución en los documentos oficiales.

¿Alguna idea brillante por ahí? gracias a todos

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Podemos pasar el nombre de la tabla en lugar de Entidad para getRepository .

 let tableName = 'user'; let query = getRepository(tableName).createQueryBuilder(tableName);
about 4 years ago · Juan Pablo Isaza 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