專案:老爸的私房錢

index

專案相關網址:
Heroku
Github


你為何會選擇這個專案?

不同於最單純的 todo list,除了練習 CRUD 功能外,擁有分類系統的記帳本能夠多加練習到用外鍵取得不同資料表的資料。

你使用了什麼技術?

使用 Express.js 建置,資料庫系統採用 MongoDB 搭配 Mongoose 套件。
前端渲染使用 handlebars 為樣板引擎,並以方便美觀的 bootstrap 5 作為前端開發工具之一。
使用者認證系統使用 passport,並使用 bcrypt 進行密碼加密與比對。

哪部分你相對能掌握?哪裡花了最多時間?

反覆練習後已經很習慣將 Promise鍊轉換為 async/await 格式。
會花比較多的時間,一般是不小心打錯字導致一個 bug 找半天找不到問題出在哪裡。
像是在設定登入失敗訊息時沒有跳出訊息,反覆確認了寫訊息的地方都沒有錯漏,最後發現問題在於驗證失敗時的導向將/users/login錯打成了/user/login
通常是錯在大小寫和單複數上,還需要更加熟悉慣例用詞。

過程中碰到什麼困難?又如何克服?

在設置 Facebook 驗證時發生了無法登入的問題。
試著用私密瀏覽登入看看,多了登入 Facebook 的手續就能確認問題是發生在驗證後。
反覆確認後發現是使用者 schema 除了自動產生的 _id ,有額外設定必填的 id 屬性,但在建立新使用者時沒有輸入 id 屬性。
補上後就沒問題了。

過程中你有對哪個技術有特別深刻的學習?

為了取得渲染用的資料,會需要反覆往資料庫查詢分類列表,練習了將這些都寫成 function 方便反覆取用。