Express程式實作

Yu-Cheng Hung
6 min readJan 8, 2020

--

今天我們要以Express框架來實作會員註冊功能,並且包含以下三項規則:

● 登入帳號為email,且不可重複註冊。

● email須符合標準email格式。

● 密碼需先進行加密再存入資料庫,且不可逆。

為了執行第三項功能,請讀者們在專案資料夾中安裝dotenv套件, 可用來隱藏些敏感性資料。

$ npm install dotenv

後續的API運行測試我們一樣使用Postman來執行。

Express並不會自動幫我們生成Models和Controllers等等資料夾,所以請讀者先辛苦一點,以手動方式新增完成下列檔案結構:

. 
├── app.js
├── bin
│ └── www
├── config
│ └── development_config.js
├── controllers
│ └── modify_controller.js
├── models
│ ├── connection_db.js
│ └── register_model.js
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── member.js
│ └── users.js
├── sevice
│ └── member_check.js
└── views
├── error.ejs
└── index.ejs
├── .env
└── .gitignore

簡單API運作測試

請將routes/member.js程式碼改成:

var express = require('express');
var router = express.Router();
router.post('/', function(req, res, next) {
console.log(req.body.test)
});
module.exports = router;

儲存後$ npm start開啟專案server,並在Postman中填入下列參數並Send:

  • HTTP method: POST
  • HTTP url : localhost:3000/
  • Body中選擇x-www-form-urlencoded
  • Key: test
  • Value: test api

此時即可在console.log中看到收到的訊息資料為test api

設定MySQL連線

請在.env輸入:

HOST = 'localhost'
DATABASE_USER = 'root'
DATABASE_PASSWORD = ''
DATABASE = 'member'

帳號密碼請依各自的設定填寫。

接著至config/development_config.js輸入:

require('dotenv').config()module.exports = {
mysql: {
host: process.env.HOST,
user: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE
}
}

然後在.gitignore輸入:

# dotenv environment variables file 
.env

最後在models/connection_db.js輸入:

// DataBase const config = require('../config/development_config'); const mysqlt = require("mysql");  const connection = mysqlt.createConnection({
host: config.mysql.host,
user: config.mysql.user,
password: config.mysql.password,
database: config.mysql.database
});
connection.connect(err => {
if (err) {
console.log('connecting error');
} else {
console.log('connecting success');
}
});
module.exports = connection;

建置MVC架構程式內容

先將routes/member.js改成下列程式碼,並賦予此API一個新的url:

controllers/modify_controller.js輸入:

models/register_model.js輸入:

運行並測試:

如此即成功註冊了一個新的使用者!

新增條件 – email不可重複進行註冊

models/register_model.js改寫如下:

運行並以重複email註冊,即會回傳警告訊息:

新增條件 — email須符合標準email格式

這邊我們在service/member_check.js撰寫判斷email格式的規則:

並在controllers/modify_controller.js加入下列判斷:

運行並以錯誤格式email註冊,即會回傳警告訊息:

新增條件 — 密碼需進行加密再存入資料庫,且不可逆

首先在models資料夾新增encryption.js並輸入:

並在controllers/modify_controller.js中加入加密部分的判斷:

運行並以正確資料註冊,即會回傳成功訊息且密碼已完成加密:

這次的實作就先到這邊,之後有機會會再持續分享相關資訊,謝謝大家,我們下次見囉!

--

--

No responses yet