Day 116 (Week17), 2021/08/05 (Thursday)

學習時數:7 hr

Done

  • [done] [BE201]
    • 1.5 MySQLNode.js 串接:後半部
    • 2.1 什麼是 middleware
    • 2.2 body-parser
  • [done] [BE201]
    • 2.3 Session middleware
    • 2.4 connect-flash (前半)
      #### To Do @ this week
  • [] w17 [BE201]

學習心得紀錄

Objective 客觀

簡單的權限管理製作

跟著做有時候還是會 miss 掉一些 code,然後執行的時候,就沒有辦法如預期的順利,所以也花一些時間在找哪裡出錯,後來發現是在一開始做簡易版的權限管理時,在 controllersgetgetAll 新增了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 !

#Middleware #Express







你可能感興趣的文章

number 類型的內建函式

number 類型的內建函式

parseFloat(), parseInt() 和 Number()

parseFloat(), parseInt() 和 Number()

APIFlask 初始化專案 - Part2

APIFlask 初始化專案 - Part2






留言討論