##连接数据库参数设置db.js
设置数据库参数
var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;
//module.exports = new Db(settings.db, new Server(settings.host, Connection.DEFAULT_PORT, {safe:false}));
module.exports = new Db('nodetest1', new Server('localhost', Connection.DEFAULT_PORT, {safe:false}));
##增加数据库操作user.js
在model中新建user.js
在这个程序中md5操作没有使用,因为好像会出问题
var mongodb = require('./db')
// 加密 md5
var crypto = require('crypto');
//初始化创建
function User(user) {
this.username = user.username;
this.password = user.password;
// this.password = crypto.createHash('md5').update(user.password).digest('hex');
};
module.exports = User;
//存入数据库操作
User.prototype.save = function save(callback) {
// 存入 Mongodb 的文檔
var user = {
username: this.username,
password: this.password,
};
mongodb.open(function(err, db) {
if (err) {
return callback(err);
}
// 讀取 users 集合
db.collection('users', function(err, collection) {
if (err) {
mongodb.close();
return callback(err);
}
// 爲 name 屬性添加索引
// collection.ensureIndex('username', {unique: true});
// 寫入 user 文檔
collection.save({"username": user.username, "password" : user.password}, function(err, user) {
mongodb.close();
callback(err, user);
});
});
});
};
//根据username获取user,其中callback为user
User.get = function get(username, callback) {
mongodb.open(function(err, db) {
if (err) {
return callback(err);
}
// 讀取 users 集合
db.collection('users', function(err, collection) {
if (err) {
mongodb.close();
return callback(err);
}
// 查找 name 屬性爲 username 的文檔
collection.findOne({username: username}, function(err, doc) {
mongodb.close();
if (doc) {
// 封裝文檔爲 User 對象
var user = new User(doc);
callback(err, user);
} else {
callback(err, null);
}
});
});
});
};
##修改routes/index.js
var express = require('express');
var User = require('../model/user.js');
var router = express.Router();
// 加密
// var crypto = require('crypto');
/* GET home page. */
router.get('/', function(req, res) {
if (req.session.user) {
res.render('index', { title: 'Home', user: req.session.user})
} else {
res.redirect('/login');
}
});
router.get('/register',function(req,res) {
res.render('register', { title: 'register' });
});
router.post('/register',function(req,res) {
var newUser = new User({
username: req.body.username,
password: req.body.password,
});
newUser.save(function(err) {
console.log("save");
req.session.user = newUser;
res.redirect('/');
});
});
router.get('/login',function(req,res) {
res.render('login', { title: 'login' });
});
router.post('/login',function(req,res) {
User.get(req.body.username, function(err, user) {
var password = req.body.password;
if (!user) {
//req.flash('error', '用戶不存在');
console.log("用户不存在");
return res.redirect('/register');
}
if (user.password != password) {
//req.flash('error', '用戶口令錯誤');
console.log("用户密码错误"+ user.password + "but nide:"+ password);
return res.redirect('/login');
}
req.session.user = user;
console.log(req.session);
console.log("登陆成功");
res.redirect('/');
});
});
router.get('/logout',function(req,res) {
req.session.user = null;
// req.flash('success', '登出成功');
res.render('logout', { title: 'login' });
});
module.exports = router;
##创建rejister.ejs
完成上述步骤,应该就可以正常的进行mongoDB,以及session的判断,当然mongodb的module这个都是要提前装好的
npm install mongodb
好了,写完收工