CUDの実装


NestJS-CUDの実装


過去の時間にはRを迎えるReadも作られています.
今日は作成、更新、削除を実施します.

REST API


これは私たちのrestapiの予想アドレスです.
addressinfohttpメソッド/user/screate新規ユーザーpost/user/1 idが1のユーザー修正fetch/user/1 idが1のユーザー削除deleteを作成
では、実施しましょう.

Create


users.controller.ts

...

@Post('/create')
  createOne(@Body() newUser: data) {
    return this.usersService.createOne(newUser);
  }

...
更新するには、httpメソッドのpostを使用してコンテンツ(オブジェクト)を送信する必要があります.
送信されたコンテンツは@Body()を使用してインポートされ、必要な変数名(newUser)に設定されてサービスに送信されます.アドレスはuser/screateに設定されています.

user.service.ts

createOne(newUser: data): data[] {
    datas.push(newUser);
    return datas;
  }
実際のロジックを担当するサービスでは、受信したオブジェクトをFAKEDBのデータにプッシュすればよい.
そして追加したデータを返して、createは終わりました!

Delete


users.controller.ts

 @Delete('/:id')
  removeOne(@Param('id') id: number) {
    return this.usersService.deleteOne(id);
  }
removeはhttpメソッドでdeleteを使用します.
パラメータのid値を受け入れ、適切なユーザーを削除するためにサービスに渡します.

user.service.ts

removeOne(id: number): data[] {
    const delUser = datas.findIndex((user) => user.id === +id);

    if (delUser !== -1) datas.splice(delUser, 1);

    return datas;
  }
受信したid値からfundIndex()でデータに適切なユーザがいるかを確認する.
パラメータとして入力される値はstringなので、+でnumberに変換する必要があります.
findIndex()は、適切な値がない場合は-1を返します.したがって、return-1でない場合にのみspliceを使用してインデックス番号のuserを削除します.
次に、現在のデータ値を返します.

Update


user.controller.ts

@Patch('/:id')
  updateOne(@Param('id') id: number, @Body() newUser: data) {
    return this.usersService.updateOne(id, newUser);
  }
updateはhttpメソッドでpatchを使用します.
値は、変更するユーザidと変更するコンテンツを送信します.
nestでは@Body()を使用してコンテンツを受信できます.
必要な名前でコンテンツを受信し、idとコンテンツをサービスに送信します.

user.service.ts

 updateOne(id: number, newUser: data): data[] {
    const editUser = datas.findIndex((user) => user.id === +id);

    if (editUser !== -1) {
      datas.splice(editUser, 1);
      datas.push({ id: Number(id), ...newUser });
    }

    return datas;
  }
適切なuserがあるかどうかを確認している場合は、削除後、受信した内容を再入力します.
本来は真DBを使うと簡単なAPIがありますがFAKEDBを使っています
次に、現在のデータ値を返します.

テスト


Insomniaを使用したテスト

サーバーの実行


まずサーバをローカルで実行
npm run start:dev

Instomniaでテスト


Create, post



もともと洪吉童と李舜臣だけだったが、私たちが送った内容によって姜甘燦が出てきたので返事をくれた.

Update, fetch



パラメータ2と所望のコンテンツを与えると、idが2のuserが私たちが送信したコンテンツ(name:“im curting”)に従って変更されていることがわかります.

Delete, delete



deleteメソッドを使用して必要なid値をパラメータとして使用すると、対応するid値のuser、すなわちim curtingが削除されます.

n/a.結論


今までやってきたのはCRUDを実現しただけで、完全なDBはありません.
ここでは、例外処理またはDTOの作成をさらに試みます.