Skip to main content

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 刪除多筆資料語法