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

103
Vistas
Paginación sin columna de identificación en TypeORM

¿Hay alguna forma de seleccionar solo las columnas dadas sin la columna de identificación y usar la paginación (omitir, tomar) en TypeORM? Estoy haciendo esto en NestJS:

artículo.servicio.ts:

 async getAll(skip: number): Promise<Article[]> {
 return await this.articleRepository.find({
 select: {
 id: false,
 title: true,
 description: true,
 body: false,
 created_at: true,
 updated_at: false,
 author: {
 full_name: true
 }
 },
 relations: {
 author: true
 },
 skip: skip,
 take: 10,
 order: {
 created_at: 'DESC'
 }
 });
}

Y en article.controller.ts :

 @Get('articles')
async getAll(@Query('page') page: number) {
 if(!page) { page = 1; }
 const skip = (page - 1) * 10;

 const articles = await this.articlesService.getAll(skip);
 return {
 status: true,
 articles: articles,
 page: page,
 }
}

Mi artículo.entity.ts :

 @Entity()
export class Article {
 
 @PrimaryGeneratedColumn()
 id: number;

 @Column({ length: 100 })
 title: string;

 @Column()
 description: string

 @Column({ type: 'text' })
 body: string;

 @ManyToOne(() => User, (user) => user.articles)
 author: User;

 @CreateDateColumn()
 created_at: string;

 @UpdateDateColumn()
 updated_at: string;
}

Cuando envío una solicitud a este punto final, ocurre un error. Creo que esto se debe a la paginación (saltar, tomar).

 QueryFailedError: column distinctAlias.Article_id does not exist
 at PostgresQueryRunner.query (project/src/driver/postgres/PostgresQueryRunner.ts:299:19)
 at processTicksAndRejections (node:internal/process/task_queues:96:5)
 at SelectQueryBuilder.loadRawResults (project/src/query-builder/SelectQueryBuilder.ts:3601:25)
 at SelectQueryBuilder.getRawMany (project/src/query-builder/SelectQueryBuilder.ts:1573:29)
 at SelectQueryBuilder.executeEntitiesAndRawResults (project/src/query-builder/SelectQueryBuilder.ts:3295:26)
 at SelectQueryBuilder.getRawAndEntities (project/src/query-builder/SelectQueryBuilder.ts:1617:29)
 at SelectQueryBuilder.getMany (project/src/query-builder/SelectQueryBuilder.ts:1707:25)
 at ArticlesService.getAll (project/src/articles/articles.service.ts:35:12)
 at ArticlesController.getAll (project/src/articles/articles.controller.ts:56:22)
 at project/node_modules/@nestjs/core/router/router-execution-context.js:46:28

Pero si elimino omitir y tomar o seleccionar la columna de identificación, funciona. ¿Hay alguna forma de que pueda seleccionar otras columnas sin la columna de identificación y usar la paginación juntas?

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

0

Problema resuelto temporalmente seleccionando columnas de identificación y eliminándolas antes de regresar

 articles.forEach(article => { delete article.id });

Aquí está la función completa de article.service.ts :

 async getAll(skip: number): Promise<Article[]> {
 const articles = await this.articleRepository.find({
 select: {
 id: true,
 title: true,
 description: true,
 body: false,
 created_at: true,
 updated_at: false,
 author: {
 full_name: true
 }
 },
 relations: {
 author: true
 },
 skip: skip,
 take: 10,
 order: {
 created_at: 'DESC'
 }
 });
 articles.forEach(article => { delete article.id });
 return articles;
}

NOTA: Sin embargo, debería haber una solución mejor.

almost 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