</div>
</div>
exports.index = function(req, res){
var mongodb = require('mongodb');
var page = req.params.page; //取得page的值,注意route中的配置,可以有可以沒有這個page
var total; //分頁的總數
var pagenum =4; //分頁的條數
if(page){
page = page;
}else{
page = 1;
}
mongodb.connect('mongodb://localhost:27017/test',function(err,conn){
conn.collection('test_insert',function(err,coll){
//這里是取得分頁的總數(筆者最開始在這里的時候用的是coll.count()取總數,結果可想而知,所以取總數大家一定要注意)
coll.count(function(err,count){
total = count;
})
//這里用limit+skip實現mongodb的分頁效果,這種寫法對于大數據量的分頁來說不合適,但是為了方便就這樣了
//下面是整個的過程,實現了分頁實現一個集合中的所有數據
//在nodejs連接mongodb的時候判斷是否查詢出了數據的時候我們用toArray方法獲得的第二個參數來判斷
coll.find().limit(pagenum).skip(pagenum*(page-1)).toArray(function(err,results){
if(results.length){
if(page==1){
var prevpage = page;
}else{
var prevpage = page-1;
}
if(page == Math.ceil(total/pagenum)){
var nextpage = Math.ceil(total/pagenum);
}else{
//這里要注意下,在對next的時候一定要對page加parseInt方法,不然他會按照字符串來相加,至于為什么,目前我也不清楚,但是只要加了parseInt就是正確的了
var nextpage = parseInt(page)+1;
}
res.render('index',
{
title:'123',
username: req.session.username,
allIndexs:results,
prevpage:prevpage,
nextpage:nextpage
//page: "<a href='/"+prevpage+"'>prev</a> <a href='/"+nextpage+"'>next</a>"
}
);
}else{
console.log('沒有任何數據');
}
conn.close(); //每次執行完后都要把鏈接給關掉(注意關掉的位置,不能放在collection的時候就關閉,不然上面的數據永遠取不到)
})
})
});
}; </pre><br />
//向一個集合中插入數據
//登錄方法,并且保存session,好在ejs中做判斷是否登錄成功
exports.login = function(req,res){
var username = req.body.username;
var password = req.body.password;
var mongodb = require('mongodb');
mongodb.connect('mongodb://localhost:27017/test',function(err,conn){
conn.collection('test_insert',function(err,coll){
coll.find({'username':username,'password':password}).toArray(function(err,results){
if(results.length){
console.log('success');
req.session.username = username;
res.redirect('/');
}else{
console.log('error');
res.redirect('/notlogin');
}
conn.close();
})
})
})
};
//刪除一個集合中的方法
//更新數據
exports.update = function(req,res){
var mongodb = require('mongodb');
var id = req.params.id;
//nodejs里面吧mongodb的id轉化為ObjectID
mongodb.connect('mongodb://localhost:27017/test',function(err,conn){
conn.collection('test_insert',function(err,coll){
//下面判斷id是否存在,存在的話就顯示更新的數據的模板,否則就更新代碼
if(id){
var mongoid = mongodb.BSONPure.ObjectID(id);
coll.find({'_id':mongoid}).toArray(function(err,results){
if(results.length){
console.log('success');
console.log(results);
res.render('update', { 'oneResult':results });
}else{
console.log('error');
}
conn.close();
})
}else{
var username = req.body.username;
var password = req.body.password;
var mongoid = mongodb.BSONPure.ObjectID(req.body.id);
//這里的更新也一樣,不知道怎么做判斷更新是否成功,所以干脆就這樣寫了
coll.update({'_id':mongoid},{'$set':{'username':username,'password':password}});
res.redirect('/');
conn.close();
}
})
})
}
//清空session
//這里附上app中的方法
app.get('/:page?', routes.index);
app.get('/del/:id',routes.del);
app.get('/logout', routes.logout);
app.get('/update/:id',routes.update);
app.post('/update',routes.update);
app.post('/', routes.insert);
app.post('/login', routes.login);
app.get('/users', user.list);