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の作成をさらに試みます.
Reference
この問題について(CUDの実装), 我々は、より多くの情報をここで見つけました
https://velog.io/@ahngh/NestJS-CUD-구현하기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
...
@Post('/create')
createOne(@Body() newUser: data) {
return this.usersService.createOne(newUser);
}
...
createOne(newUser: data): data[] {
datas.push(newUser);
return datas;
}
@Delete('/:id')
removeOne(@Param('id') id: number) {
return this.usersService.deleteOne(id);
}
removeOne(id: number): data[] {
const delUser = datas.findIndex((user) => user.id === +id);
if (delUser !== -1) datas.splice(delUser, 1);
return datas;
}
@Patch('/:id')
updateOne(@Param('id') id: number, @Body() newUser: data) {
return this.usersService.updateOne(id, newUser);
}
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;
}
npm run start:dev
Reference
この問題について(CUDの実装), 我々は、より多くの情報をここで見つけました https://velog.io/@ahngh/NestJS-CUD-구현하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol