從專案中由淺入深的學習koa (4)
序列文章
前言
node.js的出現前端已經可以用js一把梭,從前端寫到後臺。
1.效果圖
react-koa 全棧專案 ,歡迎star
2.技術棧
koa:node框架
koa-bodyparser:解析body的中介軟體
koa-router :解析router的中介軟體
mongoose :基於mongdodb的資料庫框架,操作資料
nodemon:後臺服務啟動熱更新
3.專案目錄
├── app // 主專案目錄
│ ├── controllrts // 控制器目錄(資料處理)
│ │ └── ... // 各個表對應的控制器
│ ├── middleware // 中介軟體目錄
│ │ └── resFormat.js // 格式化返回值
│ ├── models // 表目錄(資料模型)
│ │ ├── course.js // 課程表
│ │ └── user.js // 使用者表
│ └── utils // 工具庫
│ │ ├── formatDate.js // 時間格式化
│ │ └── passport.js // 使用者密碼加密和驗證工具
├── db-template // 資料庫匯出的 json 檔案
├── routes // 路由目錄
│ └── api // 介面目錄
│ │ ├── course_router.js // 課程相關介面
│ │ └── user_router.js // 使用者相關介面
├── app.js // 專案入口
└── config.js // 基礎配置資訊
4.koa的主要API
API | 作用 |
---|---|
new koa() | 得到koa例項 |
use | koa的屬性,新增中介軟體 |
context | 將 node 的 request 和 response 物件封裝到單個物件中,每個請求都將建立一個 Context,通過ctx訪問暴露的方法 |
ctx方法 | request:請求主體; response:響應主體; ctx.cookies.get:獲取cookie; ctx.throw:丟擲異常 |
request屬性 | header:請求頭; method:方法; url:請求url; originalUrl請求原始URL; href:完整URL; hostname:主機名; type:請求頭型別; |
response屬性 | header:響應頭; status:狀態,未設定預設為200或204; body:響應主體,string(提示資訊) Buffer Stream(流) Object Array JSON-字串化ull 無內容響應; get:獲取響應頭欄位; set:設定響應頭; append:新增響應頭; type:響應型別; lastModified:返回為 Date, 如果存在; etag:設定快取 |
5.koa-router主要API
API | 作用 |
---|---|
get | get方法 |
post | post方法 |
patch | patch方法 |
delete | delete方法 |
prefix | 配置公共路由路徑 |
use | 將路由分層,同一個例項router中可以配置成不同模組 |
ctx.params | 獲取動態路由引數 |
fs | 分割檔案 |
6.mongoose主要API
API | 作用 |
---|---|
Schema | 資料模式,表結構的定義;每個schema會對映到mongodb中的一個collection,它不具備操作資料庫的能力 |
model | schema生成的模型,可以對資料庫的操作 |
model的操作database方法
API | 方法 |
---|---|
create/save | 建立 |
remove | 移除 |
delete | 刪除一個 |
deleteMany | 刪除多個 |
find | 查詢 |
findById | 通過id查詢 |
findOne | 找到一個 |
count | 匹配文件數量 |
update | 更新 |
updateOne | 更新一個 |
updateMany | 更新多個 |
findOneAndUpdate | 找到一個並更新 |
findByIdAndUpdate | 通過id查詢並更新 |
findOneAndRemove | 找到一個並移除 |
replaceOne | 替換一個 |
watch | 監聽變化 |
query查詢API
API | 作用 |
---|---|
where | 指定一個 path |
equals | 等於 |
or | 或 |
nor | 不是 |
gt | 大於 |
lt | 小於 |
size | 大小 |
exists | 存在 |
within | 在什麼之內 |
注:Query是通過Model.find()來例項化
aggregate(聚合)API
API | 作用 |
---|---|
append | 追加 |
addFields | 追加檔案 |
limit | 限制大小 |
sort | 排序 |
注:aggregate=Model.aggregate()
更多詳細API, 請戳
7.react專案詳情
8.總結
一個koa專案就是從koa-bodyparser來解析body,koa-router來分發和處理介面,mongose來操作database。入門就是so-easy!