Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

257
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!