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實現(xiàn)mongodb的分頁效果,這種寫法對于大數據量的分頁來說不合適,但是為了方便就這樣了 //下面是整個的過程,實現(xiàn)了分頁實現(xiàn)一個集合中的所有數據 //在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(); //每次執(zhí)行完后都要把鏈接給關掉(注意關掉的位置,不能放在collection的時候就關閉,不然上面的數據永遠取不到) }) }) }); };
//向一個集合中插入數據
exports.insert = function(req,res){ var mongodb = require('mongodb'); mongodb.connect('mongodb://localhost:27017/test',function(err,conn){ conn.collection('test_insert',function(err,coll){ //這里的req.body.username是根據method數據發(fā)過來的方法獲得的 //使用mongodb插入數據的時候,我們可以在后面放一個回調方法來判斷數據是否插入成功 coll.insert({"username":req.body.username,"password":req.body.password},function(err,results){ if(results.length){ res.redirect('/'); }else{ res.redirect('/users'); } conn.close(); }) }) }) console.log(req.body.username) };
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.del = function(req,res){ var mongodb = require('mongodb'); var id = req.params.id; var mongoid = mongodb.BSONPure.ObjectID(id); //nodejs里面吧mongodb的id轉化為ObjectID mongodb.connect('mongodb://localhost:27017/test',function(err,conn){ conn.collection('test_insert',function(err,coll){ //這里的刪除方法來判斷數據成功與否,筆者試過了上面用toArray方法和直接在后面更回調函數的方法都不能判斷,所以加了if判斷 //這里希望大家有什么好的實現(xiàn)方法說下,畢竟這種方法看起不怎么爽 if(coll.remove({'_id':mongoid})){ console.log('恭喜你刪除成功'); res.redirect('/') }else{ console.log('刪除失敗'); res.redirect('/') } 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(); } }) }) }