狀況:本篇以Alpha Camp 2-3 的Todo-List作業的後續功能擴增實作練習,依照課綱內容實作登入、註冊功能,僅筆記自己不熟悉的重點處。
建立使用者資料結構
之前的練習已經有很多建立資料結構的經驗,之前在思考建立帳號的註冊時間該怎麼帶入,結果是自己寫碼帶入各年月日,搞得很複雜很麻煩,最後才發現其實不用這麼麻煩。
後來查到mongoose可以直接使用type: Date 以及default: Date.now就可解決了。
在這個階段因為之前不知道有這樣的做法,用了很笨的方法,寫了一大堆JavaScript的new Date()物件建構子,在轉化成年月日時,最後再存入,搞了好久。
一開始是不知道怎麼創建時間,所以邏輯只想說上網查程式如何創建年月日時,結果查到用JavaScript的new date()物件建構子來完成,最後把這些年月日時帶入資料庫存起來,但其實還有更好的方法。
這邊不使用Javascript的Date.now(),因為應該是以MongoDB建立帳戶的時間點為準所以只要傳入Date.now,MongoDB收到指令就會調用Date.now函式,以自己建立的時間為準。(如果使用Date.now()變成是在Express.js伺服器建立資料的時間)
1 | const mongoose = require('mongoose') |
在設定資料時,可以使用 type 來設定資料型別、使用 default 設定預設值、使用 required 設定是否為必填。
比對一開始的「做不出來」和最後的「成功破關」,關鍵大概是沒有下對正確的搜尋關鍵字以及不會查找官方文件,若使用工具,應先查找官方文件,雖然官方文件有時候很難懂,但他們應該是最不會錯的方式。
這次學習透過ODM來操作文件資料庫,有初步的了解,但後來查到資料庫還有一對一關係,一對多,多對多關係,覺得這部分更值得更深入的認識。
註冊系統流程
- 首先處理前端表單發送到後端的參數
- 到資料庫搜尋檢查使用者是否已經註冊
- 如果已經註冊,就退回原本畫面,並給予使用者提示
- 如果是新的使用者,就將資料寫入資料庫,完成使用者註冊,並將使用者導向首頁