爸爸的私房錢專案介紹

Ya Chu
Oct 24, 2021

--

為什麼會介紹這個專案?

我會介紹這個專案,是因為該專案為現在網頁所需基本功能的集大成專案,例如:CRUD功能、使用者登入、登出及註冊、從資料庫中搜尋找資料,以及資料庫中有多筆資料表格要互相連結。

使用了哪些技術?

使用者登入、登出及註冊部分:

1.passport 、passport-local、passport-facebook、express-session:使用者登入及使用Facebook第三方登入

2.bcryptjs:密碼加密雜湊

3.connect-flash:在使用者登入、註冊、登出時給予提示,以及express內部設定將放入res.locals的資料,提供內部樣板存取

4.dotenv:將敏感資訊放入.env,並放入.gitignore使敏感資訊不會上傳至雲端

資料庫:使用mongoose 以及mogodb

基礎架構:

  1. express及express.Router:路由設定
  2. method-override:使路由符合RESRful API風格
  3. express-handlebars:使用頁面樣板
  4. body-parser:透過 的 req.body 取得 POST 過來的表單資料

哪些部分是我相對能掌握的?哪些部分我最花時間?

對於網頁基礎架構的設置、Read瀏覽功能Delete刪除功能及使用passport打造的登入登出功能相對能夠掌握。

然而,在「搜尋」、「Create新增」及「Update修改」功能花較多時間。

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

如上所述「搜尋」、「新增」及「修改」功能讓我花比較多心力,以下為我遇到的困難:

  1. 如何在資料庫中篩選出需要的資料,並操作資料庫資料(選取、分類)
  2. 如何將資料庫中取得的資料進行比對,得出佈林值true才可以提供給views樣板使用
  3. 如何將req.body取得的值,跟資料庫中的值做連結,才可以新增及修改資料成功。

如何解決?

在網路及github上找尋相關專案的內容,去分析他們的寫法,並找到以目前自己的實力可以採用的知識及方法。

過程中對哪些技術有特別的深刻?

  1. mongodb資料庫操作:這個專案實作後,發現使用mongodb的資料庫語法,可以快速的聚合(.aggregate())、比對($match)及分組($group)資料。
  2. helper.js的建立:對於部分的功能,例如設定totalAmount及dataFormat可以使用helper.js引入,幫助達到功能。

這次的專案中,有很多的挫折及摸索,也了解到這個專案還有很多可以優化的地方,希望自己能夠更深入學習這些工具,將之前寫過的專案進行優化及改良。而且每次都把專案一口氣完成,對於整個專案打造的流程及功能更熟悉!!

--

--

Ya Chu

I’m the one who follows my heart, pursues my own life, and is willing to share. Learning is everything.