iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 29
0
Modern Web

Nest.js framework 30天初探系列 第 29

Nestjs framework 30天初探:Day29 比特幣即時看盤網站-2-後端CRUD篇

針對五張表做Restful API開發,提供CRUD基本功能。

  1. 表結構請看此段SQL script
  2. 請參考day20
  3. 這段連結資料庫的程式碼還蠻重要的。
export const databaseProviders = [
    {
        provide: 'TypeORMToken',
        useFactory: async () => await createConnection({
            type: 'mssql',
            host: 'localhost',
            port: 1433,
            username: 'sa',
            password: 'Aa123456',
            database: 'BitCoin',
            entities: [
                __dirname + '/../Entities/*{.ts,.js}'
            ]
        })
    }
]

entities 其實也可以一一把entity寫進去,檔案路徑寫法是比較方便,一次將子資料夾內的所有entity全部load進去。

  1. 所有services都是透過以下方式進行依賴注入,比較特別一點,跟一般使用的裝飾器@Inject不太一樣,TypeORM是可以透過這@InjectRepository裝飾器進行注入。
constructor(
        @InjectRepository(Features)
        private readonly featuresRepository: Repository<Features>) { }
  1. DTO物件 inerface屬性不設定readonly,因為有時候會需要rewrite post過來的data。
    舉例UsersDTO
export interface UsersDTO {
    ID: number;
    RoleID: number;
    Name: string;
    Birthday: Date;
    Email: string;
    OtherEmail: string;
    Phone: string;
    CreateTime: Date;
    CreateUser: string;
    ModifiedTime: Date;
    ModifiedUser: string;
    Remark: string;
}
  1. 建議大家在寫Entity或靠typeorm-model-generator自動把表轉成Entity後,@Entity()要明確寫成@Entity('LoginHistory')會比較好,雖然預設空的話會去抓class名稱的表,但還是有點雷,似乎沒那麼精準。

@Entity() 對http://localhost:3000/loginHistory 做GET請求,出現ERROR
https://ithelp.ithome.com.tw/upload/images/20180102/20107195CSFjKSZQQR.png

@Entity('LoginHistory')對http://localhost:3000/loginHistory 做GET請求
https://ithelp.ithome.com.tw/upload/images/20180102/20107195S8hL4aeQQd.png

透過TypeORM完成CRUD其實不難,當初卡比較多時間是在程式接不上資料庫,大家可以參考我的寫法。

程式碼都在github


上一篇
Nestjs framework 30天初探:Day28 比特幣即時看盤網站-2-Nestjs規劃篇
下一篇
Nestjs framework 30天初探:Day30 總結Nest.js
系列文
Nest.js framework 30天初探30

尚未有邦友留言

立即登入留言