快速搭建可用於實戰的koa2+mongodb框架
準備工作
mac下安裝mongodb可以參考這裡: ofollow,noindex">Mac安裝Mongdb - chendong_的部落格 - CSDN部落格
原始碼地址戳這裡:
chenyucai/hello-koa2-mongodbps:GitHub上面的原始碼直接連結了我本人的雲資料庫,可臨時提供給小夥伴們除錯與使用。
1.使用koa-generator生成koa2專案
1.1 全域性安裝koa-generator
npm install -g koa-generator
1.2 使用命令生成專案基本目錄
koa2 hello-koa2-mongodb

1.3 建立專案成功之後進入專案目錄,進行依賴安裝
cd hello-koa2-mongodb && npm install

1.4 執行命令預覽一下
npm start
瀏覽器開啟 http:// localhost:3000/

2.目錄結構
因為現在的專案基本上都是前後端分離,所以我這裡只編寫的框架中並不帶模版。然後我們需要改造一下目錄結構,詳細程式碼可移步 這裡

config: 一些公共的配置,如資料庫地址
controller: 控制器層
dbHelper: 連結mongodb
error: 實現統一異常處理
middleware: 各種中介軟體
model: 實體類
router: 路由資訊(api介面地址)
utils: 各種工具類
3.程式碼實現
koa的專案中引用檔案都是採用 require ,對於習慣了使用 import 關鍵字的小夥伴可以這樣解決:在專案中引入 babel-plugin-add-module-exports 與 babel-register
npm install babel-plugin-add-module-exports babel-register --save-dev
並在根目錄下建立一個.babelrc的檔案
{ "presets": ["es2015", "stage-3"], "plugins": ["add-module-exports"] }
並在入口檔案中 require('babel-register')
3.1 入口檔案:src/app.js

3.2 連線mongodb等設定:src/config/index.js

3.3 router,路由資訊,即api地址:src/router/index.js

3.4 controller控制器

這裡使用了 class ,習慣寫 fucntion 的小夥伴用 function 也是一樣的
3.5 model實體

下面這樣可以配置mongoose自動更新createTime和updateTime

4 統一異常處理
如果是寫java的小夥伴都知道,統一的異常處理是非常有必要的
ApiErrorNames.js定義異常code碼

ApiError.js實現統一異常處理

注意:為什麼不用class,因為用了babel,class會被編譯成es5,導致instanceof沒用
5 jwt驗證
- 使用 jsonwebtoken 庫
npm i jsonwebtoken// 一個實現jwt的包
自己實現一個jwt校驗中介軟體 (也可以直接使用koa-jwt)

在需要校驗的介面上加上verify就行了

ps: 細心的小夥伴可能發現了,為什麼沒有service層啊!! service要的要的,大家自行加上[壞笑]