Tengo 2 entidades de ubicación y categoría, la ubicación tiene una relación manyToOne con la categoría. Quiero saber cómo, cuando creo una ubicación, si el ID de categoría no existe en la tabla de categorías, cómo puedo crear una nueva categoría con el valor predeterminado.
id hacer esta función
async createLocation(location: LocationI): Promise<LocationI> { const category = await this.categoryRepository.findOne(location.id); if (!category) { this.categoryRepository.save( this.categoryRepository.create({ name: 'new Category', description: 'new drestription', }), ); } return await this.locationRepository.save( this.locationRepository.create(location), ); }pero cuando creo una ubicación con un ID de categoría no referenciado en la tabla de categorías, recibí este error: insertar o actualizar en la tabla "ubicación" viola la restricción de clave externa "FK_53c8ba3797782997cba153c2564"
entidades:
@Entity() export class Location { @PrimaryGeneratedColumn() id: number; @Column() title: string; @Column() description: string; @Column() location: string; @Column() picture: string; @Column() stars: number; @Column({ type: 'integer', name: 'number_of_rooms' }) numberOfRooms: number; @Column() price: number; @Column({ type: 'integer', name: 'category_id' }) categoryId: number; @ManyToOne(() => Category, (cat) => cat.name) @JoinColumn({ name: 'category_id', referencedColumnName: 'id' }) category: Category; }Categoría:
@Entity() export class Category { @PrimaryGeneratedColumn() id: number; @Column({ type: 'text', name: 'name', unique: true }) name: string; @Column() description: string; @OneToMany(() => Location, (location) => location.category) @JoinColumn({ name: 'location_id', referencedColumnName: 'id' }) locations: Location[]; }