save를 통해 userId와 quantity를 모두 올바르게 저장하였지만 productItems만 저장되지 않았다. product_items는 product table의 PK를 FK로 참고하고 있던 컬럼이였다.
async createCart(cart:CreateCartDto, userId: number) {
cart.userId = userId;
return await this.cartRepository.save(cart);
}
콘솔을 찍어봤지만 다 잘들어가고 있었다.
뭐가 문젠지 몰라서 객체로 직접 다 넣어서 save도 시켜주고 그랬지만 당연하게도 해결되지않았다.
알고보니 product_items는 product table을 참고 하고 있었기때문에 저장할 데이터의 이름을 id로 맞춰줘야했다
생각해보니 userId도 마찬가지였기에 고쳐주었다.... 그냥 FK생각안하고 저장이 된듯싶다.
async createCart(cart: InputCartDto, userId: number) {
return await this.cartRepository.save({
userId: { id: userId },
quantity: cart.quantity,
productItem: { id: cart.productItem },
});
여튼 위의 코드로 바꿔주니 잘 저장이 되는 것을 볼수 있었습니다.
@Entity('cart')
export class Cart {
@PrimaryGeneratedColumn()
id: number;
@Column()
quantity: number;
@ManyToOne(() => Product, (product) => product.cart)
@JoinColumn({ name: 'product_items' }) // 여기에서 이름을 변경
productItem?: Product; // 이름을 변경한 속성
@ManyToOne(() => Users, (user) => user.cart)
@JoinColumn({ name: 'user_id' })
userId: Users;
}
@Entity('product')
export class Product {
@PrimaryGeneratedColumn()
id: number;
@Column({ name: 'names' })
name: string;
@Column()
descriptrions: string;
@Column({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
created_at: Date;
@OneToMany(() => Cart, (cart) => cart.productItem)
cart?: Cart[];
}
'mysql' 카테고리의 다른 글
TYPESCRIPT - typeorm - snakeCase (0) | 2023.07.31 |
---|---|
TYPEORM - Nestjs - Entity(ONETOMANY, MANYTOONE) (0) | 2023.05.23 |
unic5n - showRoom 쿼리문 (0) | 2023.04.15 |
LIMIT (0) | 2023.04.06 |
Sub-query (0) | 2023.04.06 |