NestJS 架構說明文件
檔案結構
帶有 [NestJS] 標籤代表是根據官方文件所提供的功能所區分的資料夾,目前有列出的表示有使用過,如果不在該資料夾列表中的,可根據實際專案需求新增相對應名稱的資料夾
- src/
- abstract/ 用於放置抽象層的檔案, interface, abstract class, implements, etc…
- assets/ 靜態資源檔案,image, static resource, etc…
- config/ 環境檔設定
- env.ts 組裝 .env 的參數並給予名稱,以建立取得環境檔參數的一致性。
- controllers/ 接收請求、處理與回應
- database/ 用於同步資料表欄位設定檔案
- migration/ 資料表遷移檔案 (用於建立)
- seeders/ 資料種子建立 (用於建立以定義好的固定資料,可確保每個人在開發階段的資料庫有相同的測試資料)
- decorators/ [NestJS] 裝飾子,可以針對路由進行功能套用,並提升可讀性
- exceptions/ [NestJS]客製化處理例外事件的檔案
- filter/ [NestJS] 用於過濾回傳狀態碼與訊息的檔案,NestJS 官方建議使用 Filter 來取代 Middleware 的操作
- guards/ [NestJS] 用於放置權限控管的檔案
- interceptor/ [NestJS] 作用於 controller 前的最後一道關卡執行,通常用於檔案上傳處理的檔案
- models/ 用於 Mapping Database 欄位的檔案
- 使用 ORM 前需先建立與資料庫欄位的對應資料結構
- module/ [NestJS] 用來指定 Controller 與對應 DI 的檔案
- NestJS 的路由需要透過註冊 module 來實現,並且注入至模組進入點 (app.module)
- services/ 用於跟 Database 進行 C/R/U/D
- pipes/ [NestJS] 用於放置客製化資料轉換的檔案
- utils/ 用於放置程式通用的工具包檔案
- storage/ 存放上傳圖片的位置
- .env 環境檔 (因為不會被 Git 追蹤,所以首次從 Git clone 專案時需要複製一份環境檔範例來更改)
- .env.example 環境檔範例 (實際上.env不會讓 Git 追蹤與公開,所以會開一個範例檔給 Git 追蹤)
- .sequelizerc Sequelize ORM 的設定檔
Middleware 因為無法得知程式在哪個階段被執行,因此被官方認為是過時且不安全的用法
套件說明
https://www.npmjs.com/package/jyz-common-library-type
SQL Query 與 共用方法 library
- SQL Command For Oracledb
- insertQueryByOracle 新增單筆資料語法
- insertMultipleQueryByOracle 新增多筆資料語法
- updateQueryByOracle 更新資料語法
- deleteQueryByOracle 刪除單筆資料語法
- deleteQueryWithMultipleKeyByOracle 使用多條件刪除資料語法
- deleteMultipleQueryByOracle 刪除多筆資料語法