1

A 400 "user should not be empty" error occurs when creating a transaction. How to solve it?

I may have generated the table wrong somewhere.

    async create(createTransactionDto: CreateTransactionDto, id:number) {
    const newTransaction = {
      title: createTransactionDto.title,
      amount: createTransactionDto.amount,
      type: createTransactionDto.type,
      category: {id: +createTransactionDto.category},
      user: {id}
    }
@Entity()
export class Transaction {
  @PrimaryColumn({ name: 'transaction_id' })
  id: number

  @Column()
  title: string

  @Column({ nullable: true })
  type: string

  @ManyToOne(() => User, (user) => user.transactions)
  @JoinColumn({ name: 'user_id' })
  user: User

  @ManyToOne(() => Category, (category) => category.transactions)
  @JoinColumn({ name: 'category_id' })
  category: Category

  @Column()
  amount: number

  @CreateDateColumn()
  createdAt: Date

  @UpdateDateColumn()
  updateAt: Date
}
@Entity()
export class Category {
  @PrimaryGeneratedColumn({ name: 'categoty_id' })
  id: number

  @Column()
  title: string

  @ManyToOne(() => User, (user) => user.categories)
  @JoinColumn({ name: 'user_id' })
  user: User

  @OneToMany(() => Transaction, (transaction) => transaction.category)
  transactions: Transaction[]

  @CreateDateColumn()
  createdAt: Date

  @UpdateDateColumn()
  updateAt: Date
}
@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number

  @Column()
  email: string

  @Column()
  password: string

  @OneToMany(() => Category, (category) => category.user, {
    onDelete: 'CASCADE',
  })
  categories: Category[]

  @OneToMany(() => Transaction, (transaction) => transaction.user, {
    onDelete: 'CASCADE',
  })
  transactions: Transaction

  @CreateDateColumn()
  createdAt: Date

  @UpdateDateColumn()
  updateAt: Date
}

.............................................................................................................................................................................................................

Umut TEKİN
  • 856
  • 1
  • 9
  • 19

2 Answers2

0
export class CreateTransactionDto {
    @IsNotEmpty()
    title: string;

    @IsNotEmpty()
    @IsNumber()
    amount: number;

    @IsString()
    @MinLength(6)
    type: 'expense' | 'income';

    @IsNotEmpty()
    category: Category;

    @IsOptional()
    user?: User;
}

the user field needs to be made optional in TransactionDto

khs
  • 101
  • 1
-1

нужно убрать из createTransactionDTO колонку юзера полностью . в entity transaction поменяй @PrimaryColumn на @PrimaryGeneratedColumn({name:'transaction_id'})