nodejs+mongodb实现curd 登录 注销 分页等功能的实现过程
来源:互联网 发布:淘宝描述不符被下架 编辑:程序博客网 时间:2024/06/15 15:06
e page.
*/
//取得一个集合中的所有数据并实现分页效果,这里我们还处理session的登录判断等
//登录方法,并且保存session,好在ejs中做判断是否登录成功
//删除一个集合中的方法
//更新数据
//清空session
*/
//取得一个集合中的所有数据并实现分页效果,这里我们还处理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(); } }) })}
//清空session
exports.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);
- nodejs+mongodb实现curd 登录 注销 分页等功能的实现过程
- nodejs+mongodb实现curd 登录 注销 分页等功能的实现过程
- session实现登录注销功能
- nodejs + mongodb 实现用户登录的资源
- nodejs + mongodb 实现用户登录
- jsp实现简单的登录与注销功能
- 网站注册登录注销功能实现
- React Native 实现注销登录功能
- WeX5之登录注销功能实现
- 学习SSH时的练习demo,实现分页和登录等简单功能
- java操作mongoDB实现CURD
- android实现注销功能
- NodeJS MongoDB CURD 入门
- 使用Tomcat j_security_check实现用户登录、注销功能
- javaWeb注册,登陆,注销功能的实现
- c语言实现系统关机注销等功能
- 论坛-纯JSP怎么实现用户的注销和登录功能
- 存储过程 实现分页功能
- LeetCode-Permutations
- 20130803
- C语言互斥锁-条件变量实现公共缓存区数据读写
- 软件包 java.util.concurrent 的描述
- SEO 工具大全
- nodejs+mongodb实现curd 登录 注销 分页等功能的实现过程
- hdu 4472 Count DP 递推
- Java 基础知识巩固(二)--持续更新
- uva 10129
- 1053. Path of Equal Weight (30)-PAT
- 入门经典-p130-倒水问题代码解析
- IOS 项目名称修改(XCODE4.6)
- IP加速器 加速各种网络游戏.IP加速器构建的高速虚拟网络
- 项目管理之沟通和计划