# 「NestJS入門 TypeScriptではじめるサーバーサイド開発」 ## セクション1:イントロダクション ## セクション2:NestJSの基本 ## セクション3:バリデーションと例外処理 ### 26. バリデーション - Pipe - NestJsでバリデーション、データの変換を扱うクラス - ハンドラーがリクエストを受け取る前にリクエストに対して処理を行う - 処理後のデータをハンドラーに渡す - 処理中に例外を返すことができる - [組み込みパイプ](https://docs.nestjs.com/pipes#built-in-pipes) - 使い方 画像貼るの大変だから省略 - ハンドラに適用 - パラメーターごとに適用 - グローバルへの適用 - UUID - Universally Unique Identifier (UUID) とは、あるリソースを、同じ種類の他のすべてのリソースの中から一意に識別するために使用されるラベルです。 - UUID は 128 ビットの値で、標準的には 123e4567-e89b-12d3-a456-426614174000 (ハイフンで 5 つに区切られた 16 進数の文字列) 形式の 36 文字の文字列として表されます。 - 使用例)ハードディスクのパーティションの識別、DBのkey、intraの課題のレポジトリのurl [UUID \- MDN Web Docs 用語集: ウェブ関連用語の定義 \| MDN](https://developer.mozilla.org/ja/docs/Glossary/UUID) [UUID \| 日経クロステック(xTECH)](https://xtech.nikkei.com/it/article/Keyword/20090206/324330/) https://xtech.nikkei.com/it/article/Keyword/20090206/324330/ ### 28. Class Validator - Class Validatorは入力validation用のライブラリ [typestack/class\-validator: Decorator\-based property validation for classes\.](https://github.com/typestack/class-validator) ### 29. 例外処理 [Exception filters \| NestJS \- A progressive Node\.js framework](https://docs.nestjs.com/exception-filters) ## セクション4:データベース ### 31. データベース環境構築 - pgadminへのアクセスに失敗しました。 解決法->pgadminディレクトリのオーナーとグループを変更する ```sh sudo chown -R 5050:5050 docker/pgadmin ``` - 参考 https://stackoverflow.com/questions/64781245/permission-denied-var-lib-pgadmin-sessions-in-docker https://qiita.com/yohm/items/047b2e68d008ebb0f001 ### 32. データベース環境構築(Dockerが使えない方向け) ### 33. ORMの導入 - ORM(Object Relational Mapping) - オブジェクト指向の言語とRDBの非互換なデートをマッピングする機能 - オブジェクト指向は「現実世界の物事に即したデータモデル」 - RDBは「検索などRDBとしての役割を果たすために最適化されたモデル」 - メリット - SQL文を書かなくてもDB程度操作ができる - データの定義が一箇所で済むので、メンテナンス性が高まる - データベースを抽象化できる - デメリット - ORMライブラリの操作を学ぶ必要がある - パフォーマンスチューニングが難しい - TypeORM - Node.js上で動作するORMライブラリ - TypeScriptで実装されている - Entity - RDBのテーブルと対応するオブジェクト - @Entityデコレーターをつけたクラスとして定義する - @PrimaryGeneratedColumnデコレーターや@ColumnデコレーターがついたプロパティがRDBのColumnとマッピングされる - Repository - Entityを管理するためのオブジェクト - EntityとRepositoryが1対1となり、データベース操作を抽象化する - クラスに@EntityRepository()デコレーターをつけて、Repositoryを継承する ### 34. データベースとの接続設定 ### 35. Entityの作成 - PrimaryGeneratedColumn 主キーで自動採番カラムであることを示すデコレーター - 主キー:データを一意に識別するための項目 - 自動採番:自動的に通し番号を設定する機能 ### 36. DBマイグレーション - migration:《コ》〔別の環境・バージョンなどへの〕移行、乗り換え - DBマイグレーションとは、SQLではない言語で記述されたデータの定義ファイルを使ってデータベースを操作するための仕組み。 TypeORMの場合はデータの定義ファイルはEntity ### 37. Repositoryの作成 ### 38. データベースへの保存 ## セクション5:セキュリティ ## セクション6:テスト