為什麼會介紹這個專案?
我會介紹這個專案,是因為該專案為現在網頁所需基本功能的集大成專案,例如:CRUD功能、使用者登入、登出及註冊、從資料庫中搜尋找資料,以及資料庫中有多筆資料表格要互相連結。
使用了哪些技術?
使用者登入、登出及註冊部分:
1.passport 、passport-local、passport-facebook、express-session:使用者登入及使用Facebook第三方登入
2.bcryptjs:密碼加密雜湊
3.connect-flash:在使用者登入、註冊、登出時給予提示,以及express內部設定將放入res.locals的資料,提供內部樣板存取
4.dotenv:將敏感資訊放入.env,並放入.gitignore使敏感資訊不會上傳至雲端
資料庫:使用mongoose 以及mogodb
基礎架構:
- express及express.Router:路由設定
- method-override:使路由符合RESRful API風格
- express-handlebars:使用頁面樣板
- body-parser:透過 的 req.body 取得 POST 過來的表單資料
哪些部分是我相對能掌握的?哪些部分我最花時間?
對於網頁基礎架構的設置、Read瀏覽功能、Delete刪除功能及使用passport打造的登入登出功能相對能夠掌握。
然而,在「搜尋」、「Create新增」及「Update修改」功能花較多時間。
過程中碰到什麼困難?又如何克服?
如上所述「搜尋」、「新增」及「修改」功能讓我花比較多心力,以下為我遇到的困難:
- 如何在資料庫中篩選出需要的資料,並操作資料庫資料(選取、分類)
- 如何將資料庫中取得的資料進行比對,得出佈林值true才可以提供給views樣板使用
- 如何將req.body取得的值,跟資料庫中的值做連結,才可以新增及修改資料成功。
如何解決?
在網路及github上找尋相關專案的內容,去分析他們的寫法,並找到以目前自己的實力可以採用的知識及方法。
過程中對哪些技術有特別的深刻?
- mongodb資料庫操作:這個專案實作後,發現使用mongodb的資料庫語法,可以快速的聚合(.aggregate())、比對($match)及分組($group)資料。
- helper.js的建立:對於部分的功能,例如設定totalAmount及dataFormat可以使用helper.js引入,幫助達到功能。
這次的專案中,有很多的挫折及摸索,也了解到這個專案還有很多可以優化的地方,希望自己能夠更深入學習這些工具,將之前寫過的專案進行優化及改良。而且每次都把專案一口氣完成,對於整個專案打造的流程及功能更熟悉!!