## 你為何會選擇這個專案? 會選擇這個專案,是因為這專案包含了許多基本功,像是基本的CRUD、會員登入/註冊功能、資料庫中資料的串接、以及密碼加密等功能。 ## 你使用了什麼技術? 主要是用Nodejs 與 Express 建置伺服器,用MongoDB做為資料庫,用Handlebars當模板引擎,套用Bootstrap及Bootswatch建立前端畫面,使用的套件和用途如下: bcryptjs: 將用戶密碼進行雜湊後再放入資料庫,避免外洩時發生安全疑慮。 connect-flash: 建立快閃訊息,讓使用者在出現錯誤時,能夠看到系統的提示訊息。 dotenv: 用環境變數隱藏敏感資訊,將敏感資訊都存放在.env中。 express-session: 讓瀏覽器的 cookie 和 session 匹配起來,用來判斷使用者的登入狀態。 method-override: RESTful 風格,將路由語意化。 mongoose: 對資料庫進行操作。 passport: 驗證登入機制。 passport-facebook: 使用Facebook進行登入。 passport-local: 使用本地端進行登入。 ## 哪部分你相對能掌握?哪裡花了最多時間? 對於前端畫面的建立及搭配路由的設置,這是比較能掌握的部分,過程中每完成一部分功能也會執行git commit來記錄每次的變動。 在資料設計上花比較多時間,尤其讓資料與資料間產生關聯花費較多功夫。 ## 過程中碰到什麼困難?又如何克服? 在建立record時因為缺少了categoryID導致資料無法產生的狀況,背後的原因是一開始沒有將兩個Schema相對應的欄位做關聯。在查找資料過後發現了一些自己忽略的細節及語法如`populate`,將以上的地方補齊後使每一筆record的category可以對應到category model的id進而完成產生資料的部分 ## 過程中你有對哪個技術有特別深刻的學習? 在為了讓使用者修改每筆資料時能帶出原本下拉式選單的選項時,學習到可以自己建立helpers的方式並透過Handlbars來引用,雖然一定還有很多方法可以做到,但在查詢資料的過程中,不斷的吸收新方法、新知識,對未來若有更大的專案要做的話,能用的招式也就多了!