nodejs+mongodb实现curd 登录 注销 分页等功能的实现过程

来源:互联网 发布:华晨中华v5配置数据图 编辑:程序博客网 时间:2024/06/01 20:18
//取得一个集合中的所有数据并实现分页效果,这里我们还处理session的登录判断等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的时候就关闭,不然上面的数据永远取不到)         })     })   }); };//向一个集合中插入数据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数据发过来的方法获得的         //使用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) };//登录方法,并且保存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.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判断             //这里希望大家有什么好的实现方法说下,毕竟这种方法看起不怎么爽             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();             }         })     }) }//清空sessionexports.logout = function(req,res){     req.session.username='';  //清空session     res.redirect('/'); }//这里附上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);
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 儿子2周4个月了不说话怎么办 三岁的宝宝还不会数数怎么办 2岁宝宝晚上不睡觉不听话怎么办 8个月的狗狗怕人不敢出门怎么办 狗太怕人了怎么办都不敢出门 媳妇和婆婆晚上都不想带孩子怎么办 婆婆和媳妇带孩子观念不一样怎么办 婆婆给媳妇买了不喜欢的家具怎么办 断奶后宝宝对奶粉很抗拒怎么办 两岁宝宝断奶不喝奶粉怎么办 宝宝两岁了断奶后奶粉不吃怎么办 宝宝断奶两天了不愿意吃奶粉怎么办 一岁四个月宝宝断奶不喝奶粉怎么办 四个月宝宝断奶不喝奶粉怎么办 四个月宝宝断奶后不吃奶粉怎么办 2岁的宝宝不开口说话怎么办 一周岁宝宝断奶不喝奶粉怎么办 八个月宝宝断奶不喝奶粉怎么办 婆家人总是用心机对待娘家人怎么办 婆婆老是背后说我娘家人坏话怎么办 婆家姐带孩子住娘家不走怎么办? 老是想在娘家不想回婆家怎么办 娘家和婆家同时向我借钱怎么办 土地确权后娘家婆家都没有怎么办 结了婚婆家向娘家借钱怎么办? 婆婆的娘家人从我家住怎么办 八个月宝宝断奶后不吃奶粉怎么办 吃母乳的宝宝不吸奶嘴怎么办 宝宝吸了奶嘴不吸母乳怎么办 婴儿吃了奶嘴不吸母乳怎么办 十一个月宝宝断奶不喝奶粉怎么办 孩子三门成绩全不及格家长该怎么办 宝宝快十个月了还不会爬怎么办 小孩写字老把手向里扭曲怎么办 孩子该上四年级了数学差的很怎么办 孩子上三年级了数学成绩好差怎么办 三年级数学老考70-80分怎么办 叛逆期的孩子用死来威胁家长怎么办 叛逆期的孩子抽烟喝酒家长该怎么办 大学遇到不好的老师加课怎么办 两岁的宝宝脾气古怪不听话怎么办