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
教育センター
作業-羽毛バニラ
Reference
この問題について(Day19(4.7)), 我々は、より多くの情報をここで見つけました https://velog.io/@sjy0917/Day19テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol