Как вставить данные с использованием репозитория и отношения один ко многим? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть два объекта: Продукт и Категория. Я пытался добавить данные в базу данных, но не получаю сообщения об ошибке. Но результата я не ожидал. результат успешен, но когда я от go до mysql и просматриваю связанную таблицу, поле categoryId помечается как null

My Product Entitiy

export class Product {

  @PrimaryGeneratedColumn({ type: 'bigint', unsigned: true })
  id: number;

  @Column({ type: 'varchar', length: 255 })
  name: string;

  @Column({ type: 'int' })
  price: number;

  @Column({ type: 'varchar', length: 255 })
  code: string;

  @Column({ type: 'timestamp', nullable: true })
  created_at: Date;

  @ManyToOne(type => Category, category => category.products,
    { cascade: ['insert', 'update'],eager:true,onDelete:"CASCADE",onUpdate:"CASCADE" })
  category: Category;
}

My Product Сервис

@Injectable()
export class ProductService {
  constructor(
    @InjectRepository(Product)
    private productRepository: Repository<Product>,
  ) {
  }




  create(createProductDto: ProductDto): Promise<Product> {
    const product = new ProductDto();
    product.categoryId =createProductDto.categoryId;
    product.code=createProductDto.code;
    product.name = createProductDto.name;
    product.price = createProductDto.price;
    return  this.productRepository.save(product)
  }


}

1 Ответ

0 голосов
/ 08 мая 2020

Вам нужно добавить categoryId внешний ключ к вашей Product сущности:

export class Product {
  //...
  @Column()
  categoryId: number;
}
...