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

207
Vistas
No se puede consultar de uno a muchos para la propiedad NestJS y TypeORM

Tengo dos entidades una es car y otra es carAvailability

 import { Entity, Column, PrimaryGeneratedColumn, OneToMany } from 'typeorm'; import { CarAvailability } from 'src/car-availabilitys/car-availability.entity'; @Entity('cars') export class Car { @PrimaryGeneratedColumn() id: number; @Column() name: string; @OneToMany(() => CarAvailability, (carAvailability) => carAvailability.car, { eager: true, cascade: true, }) availabilities: CarAvailability[]; }

Estoy tratando de agregar un servicio que consulta y filtra autos según la disponibilidad. En Mi Servicio e intenté de dos maneras:

Método 1 con funciones de repositorio:

 async test () { const startDateTime = '2012-04-24 02:25:43.511'; return await this.repo.find({ relations: ['availabilities'], where: { availabilities: { start_date_time: startDateTime } } }); }

Método 2 con el generador de consultas:

 async test () { const startDateTime = '2012-04-24 02:25:43.511'; return this.repo.createQueryBuilder('cars') .innerJoin('cars.availabilities', 'car_availabilities') .where("cars.availabilities.start_date_time = :startDateTime", { startDateTime }) .getMany(); }

Error del método 1:

 Error: Cannot query across one-to-many for property availabilities

Error del método 2:

 QueryFailedError: missing FROM-clause entry for table "availabilities"

Siento que me estoy perdiendo algo, pero no estoy seguro. He referido documentos de NestJS y TypeORM, pero parece que no puedo entender qué salió mal.

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

0

Usando el Método 2, debido a que creó un alias de car.availabilities como car_availabilities , su cláusula where debe usar el nombre de alias:

 car_availabilities.start_date_time

no:

 cars.availabilities.start_date_time
about 4 years ago · Juan Pablo Isaza Denunciar

0

Uso de las funciones de repositorio del Método 1 con el generador de consultas anidadas:

 async test () { const startDateTime = '2012-04-24 02:25:43.511'; return await this.repo.find({ relations: ['availabilities'], where: (qb) => { qb.where('availabilities.start_date_time = :startDateTime', { startDateTime }); } }); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Retire cascade del lado oneToMany y coloque:

 { cascade: true, onDelete: 'CASCADE', onUpdate:'CASCADE' }

en el lado manyToOne .

Y si va a usar relaciones: ['availabilities'] puede eliminar eager: true .

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