Day19(4.7)


HttpExceptionHandling

Main.ts http-exception-filter.ts

Soft-Delete


物理的にデータベースから削除すると、次のようになります.
  @Mutation(() => Boolean)
  deleteProduct(
    @Args('productId') productId: string, //
  ) {
    // 제품을 삭제한다.
    return this.productService.delete({ productId });
    // 제품이 삭제됐다면 True or False
  }
  async delete({ productId }) {
    // 제품을 삭제하는 비즈니스로직

    // 1. 실제 삭제(db의 데이터를 물리적으로 삭제한다.)
    const result = await this.productRepository.delete({ id: productId });
    return result.affected ? true : false;
    // 삭제가됐다면 1이기때문에 true
    // 아니라면 false가 반환된다.
  }
ただし、Soft-Deleteを行うと、物理的な削除ではなく、削除状態をカラム形式で表し、削除状態を通知するように削除する
  @Column({ default: null })
  @Field(() => Date)
  deletedAt: Date;
製品を取得するときにdeleteAtが空であるかどうかを確認すると、削除ステータスを区別できます.
Nest.jsとTypeORMに内蔵されている機能
  @DeleteDateColumn()
  deletedAt: Date;

this.productRepository.softRemove({ id: productId }); // id로만 삭제가능
this.productRepository.softDelete({ id: productId }); // 다양한 조건으로 삭제가능.

Join(Table)


下図に示すように、joinテーブルはFEから取得して使用することもできる.
    // 2. 상품과 상품거래위치를 같이 등록하는경우 (Join)
    const { productSaleslocation, ...product } = createProductInput;

    const result = await this.productSaleslocationRepository.save({
      ...productSaleslocation,
    });

    return this.productRepository.save({
      ...product,
      productSaleslocation: result, //{ id: result.id }, 동일하게 인식한다.
    });

TIL Git


教育センター
作業-羽毛バニラ