http://www.cnblogs.com/best/p/6212807.html#_label3_0_1_4
https://cnodejs.org/topic/504b4924e2b84515770103dd
http://www.reibang.com/p/9b20c1e2f373
實(shí)例:
安裝MongoDB
設(shè)置環(huán)境變量
將mongodb 的 安裝目錄的 E:\Program Files\MongoDB\Server\3.4\bin 寫(xiě)入環(huán)境變量
啟動(dòng)服務(wù)
控制臺(tái) 輸入 mongodb --dbpath E:\MongoDB\data 這后面的路徑便是數(shù)據(jù)集合的路徑
服務(wù)啟動(dòng)成功提示
[圖片上傳失敗...(image-50e95d-1539679962100)]
MongoDB監(jiān)聽(tīng)的是27017端口,打開(kāi)瀏覽器輸入http://127.0.0.1:27017蔓涧,則會(huì)看到如下提示:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
如果嫌每次輸入命令打開(kāi)服務(wù)麻煩的話可以 寫(xiě)成一個(gè)批處理文件 .bat 文件, 寫(xiě)上代碼
start mongod --dbpath E:\MongoDB\data
安裝模塊
npm install mongoose --save
使用MongoDB
連接
在app.js 文件中
// app.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/blog') //連接本地?cái)?shù)據(jù)庫(kù)blog
var db = mongoose.connection;
// 連接成功
db.on('open', function(){
console.log('MongoDB Connection Successed');
});
// 連接失敗
db.on('error', function(){
console.log('MongoDB Connection Error');
});
連接成功后接下來(lái)寫(xiě)一個(gè) 登錄注冊(cè)
添加登錄注冊(cè)頁(yè)面
在views模塊下添加 login.html 和register.html
<!-- login.html -->
<h1>登錄頁(yè)面</h1>
<div>
<form action="/login" method="post">
<p>
<label for="username">用戶名</label>
<input type="text" id="username" name="username" placeholder="用戶名">
</p>
<p>
<label for="password">密碼 : </label>
<input type="text" id="password" name="password" placeholder="密碼">
</p>
<p>
<input type="submit" value="登錄">
</p>
</form>
</div>
<!-- register.html -->
<h1>注冊(cè)頁(yè)面</h1>
<a href="/login"> 去登錄 </a>
<div>
<form action="/register" method="post">
<p>
<label for="username">用戶名</label>
<input type="text" id="username" name="username" placeholder="用戶名">
</p>
<p>
<label for="password">密碼 :</label>
<input type="text" id="password" name="password" placeholder="密碼">
</p>
<p>
<label for="age">年齡 :</label>
<input type="text" id="age" name="age" placeholder="年齡">
</p>
<p>
<label for="address">地址 :</label>
<input type="text" id="address" name="address" placeholder="地址">
</p>
<p>
<input type="submit" value="注冊(cè)">
</p>
</form>
</div>
新增Models 模塊
在根路徑下新建 Models 文件夾开伏。 添加 users.js
// Models/users.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// 聲明一個(gè)數(shù)據(jù)集 對(duì)象
var userSchema = new Schema({
username: {
type: String,
unique: true
},
password: {
type: String
},
age: Number,
address: String,
createAt: {
type: Date,
default : Date.now()
}
});
// 將數(shù)據(jù)模型暴露出去
module.exports = mongoose.model('users', userSchema);
編寫(xiě)路由
// routes/index.js
var express = require('express');
var router = express.Router();
var User = require('../models/users');
router.get('/login', function (req, res) {
res.render('login');
});
router.get('/register', function (req, res) {
res.render('register');
});
// 這里的業(yè)務(wù)邏輯將寫(xiě)在 兩個(gè)post 路由里
router.post('/login', function (req, res) {
});
router.post('/register', function (req, res) {
});
這里我們需要安裝一個(gè)模塊 body-parser 用來(lái)解析post請(qǐng)求的參數(shù)
npm install body-parser --save
// app.js
var bodyParser = require('body-parser')
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false}));
這樣我們就可以通過(guò) request.body 來(lái)拿到post 請(qǐng)求過(guò)來(lái)的 數(shù)據(jù)了
先寫(xiě)一個(gè)注冊(cè)的
// routes/index.js
router.post('/register', function (req, res) {
// 獲取用戶提交的信息
var postData = {
username: req.body.username,
password: req.body.password,
age: req.body.age,
address: req.body.address
};
// 查詢是否被注冊(cè)
User.findOne({username: postData.username}, function (err, data) {
if (data) {
res.send('用戶名已被注冊(cè)');
} else {
// 保存到數(shù)據(jù)庫(kù)
User.create(postData, function (err, data) {
if (err) throw err;
console.log('注冊(cè)成功');
res.redirect('/userList'); // 重定向到所用用戶列表
})
}
});
});
// 獲取所有用戶列表
router.get('/userList', function (req, res) {
var userList = User.find({}, function (err, data) {
if (err) throw err;
res.send(data)
});
});
上面通過(guò) mongoose 的 api 對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作
Mongoose Api
然后就是驗(yàn)證登錄的了
router.post('/login', function (req, res) {
var postData = {
username: req.body.username,
password: req.body.password
};
User.findOne({
username: postData.username,
password: postData.password
}, function (err, data) {
if(err) throw err;
if(data){
res.send('登錄成功');
}else{
res.send('賬號(hào)或密碼錯(cuò)誤')
}
} )
});
到這里就基本完成了 Express 對(duì)Mongodb 的連接接奈,插入拂酣,查詢去团。
ps : 參考文檔 Mongoose Api
- [圖片上傳失敗...(image-211001-1539679962093)]
- [](javascript:void(0);)