前言
這是一個Node.js + Vue.js 使用MongoDB的學習筆記。
並不會有詳細的教學,因為這是筆記!!!
需要對node.js和vue.js有基楚的認識才適合觀看。
事前準備
- 測試API的Postman
安裝body-parser middleware
body-parser 是一個處理HTTP請求的中間軟體,我們必須安裝他才能去處理HTTP請求。
終端機:
> npm install body-parser
成功安裝後,引入body-parser。
server.js:
const bodyParser = require("body-parser");
//使用body-parser中間件
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
建立一個註冊的API接口
users.js:
router.post("/register",(req,res) => {
res.json(req.body); //回傳我們送出請求的body
};
開啟Postman測試API
打入測試資料確定API有成功回傳。

註冊前驗證信箱是否被註冊
引入User momodels 加上 判斷是否註冊過
users.js:
const User = require("../../models/User"); //引入User models
// $route POST api/users/test
// @desc save/return user data
// @access public
router.post("/register",(req,res) => {
// res.json(req.body);
//Is email duplicate
User.findOne({email:req.body.email}) //找尋資料庫有無這個email
.then((user)=>{
if(user){
return res.status(400).json("此信箱已被註冊");//回傳一個狀態碼以及錯誤訊息
}
})
})
將使用者資料存入User模型
users.js:
if(user){
return res.status(400).json("此信箱已被註冊");
}
else{
const newUser = new User({ //實例化一個user模型來儲放使用者資訊
name:req.body.name,
email:req.body.email,
//avatar,
password:req.body.password
})
}
加密使用者密碼安裝bcrypt
終端機:
> npm install bcrypt
在需要加密的地方引入bcrypt
users.js:
const bcrypt = require("bcrypt");
加密密碼並送出數據到資料庫
bcrypt.genSalt(saltRounds, function(err, salt) {
bcrypt.hash(myPlaintextPassword, salt, function(err, hash) {
// Store hash in your password DB.
});
});
//saltRounds是加密的模式
//myPlaintextPassword加密對象
//hash加密後的密碼
users.js:
if(user){
return res.status(400).json("此信箱已被註冊");
}
else{
const newUser = new User({ //實例化一個user模型來儲放使用者資訊
name:req.body.name,
email:req.body.email,
//avatar,
password:req.body.password
})
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(newUser.password, salt, (err, hash) => {
if(err) throw err; //有錯誤的話就將錯誤拋出
newUser.password = hash; //將使用者的密碼改成加密後的
newUser.save() //調用存取方法,送到資料庫
.then(user => res.json(user)) //成功拿到使用者資訊
.catch(err => console.log(err)) //失敗打印出錯誤
});
});
}
使用Postman測試

MongoDB
到mongoDB你所創建的資料庫裡的Collections查看剛剛新增的資料是否有存入。
