Day 116 (Week17), 2021/08/05 (Thursday)
學習時數:7 hr
Done
- [done] [BE201]
- 1.5
MySQL
與Node.js
串接:後半部 - 2.1 什麼是
middleware
? - 2.2
body-parser
- 1.5
- [done] [BE201]
- 2.3
Session middleware
- 2.4
connect-flash
(前半)
#### To Do @ this week
- 2.3
- [] w17 [BE201]
學習心得紀錄
Objective 客觀
簡單的權限管理製作
跟著做有時候還是會 miss 掉一些 code,然後執行的時候,就沒有辦法如預期的順利,所以也花一些時間在找哪裡出錯,後來發現是在一開始做簡易版的權限管理時,在 controllers
中 get
與 getAll
新增了if (!checkPermission(req)) return res.end()
沒有刪除,所以在做 index.js
的把權限管理包成一個 function
後,讓 server 跑起來後,不管是單一 todo 或者是全部的 todo 在沒有權限的情況下都沒有 render 出 todo 的頁面。
body-parser
除了引用 body-parser
外,還要使用 body-parser
:
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
前面忘記使用 app.use(...)
,難怪在取 body 資料時,命的 const content = req.body.content
都是 content is not defined
,為此還找了好久,後來才發現沒有使用到,難怪 Express 無法解析。
Express-session & errorMessage
一開始想滿久 session 在 Express middleware 中,到底哪一個是讀,那一個是寫,後來用 PHP SESSION 的思路去想,就有比較懂,不過語法寫的方式不太一樣,還是要多熟悉。
另外,一開始以為簡易的登入/登出功能已經做好,就往下做 errorMessage
,結果發現怎麼輸入錯誤的密碼,都沒有顯示 errorMessage
,看了好幾次這個部分的課程影片,突然想到跳回主頁看,居然發現:一直都顯示的是「你沒有登入」,才赫然發現:原來登入功能作失敗,才往回找是哪裡出錯,結果發現影片上的 session 的 app.use 跟新的 GitHub 上的 session README 說明不一樣!
因為我多了那行 cookie: { secure: true }
,所以不管怎麼輸入正確的或錯誤的密碼,都沒有辦法顯示「已登入」,後來我把這行刪除後,輸入錯誤的密碼,就會跳出 middleware 的 errorMessage,後來也登入成功。
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
// cookie: { secure: true }
}))
感受
其實今天在各個小主題裡面都有出一些小差錯,也花了一些時間在找哪裡出錯,確保有跟上影片的 code 及輸出結果。
Decisional 決定行動
明天繼續 [BE201] again & again !