手机版

NodeJS学习笔记之连接中间件应用实例

时间:2021-10-14 来源:互联网 编辑:宝哥软件园 浏览:

一,开篇分析

大家好哦,大熊君又来了,昨天因为有点个人的事没有写博客,今天又出来了一篇,这篇主要是写一个记事本的小应用,前面的文章,

我也介绍过"连接"中间件的使用以及“Mongodb”的用法,今天就结合这两个中间件,写个实际的例子,不断完善和重构,已达到

充分学习的目的。好了,废话不说了,直接进入主题。

二,需求分析

(1),用户注册,登录功能(没有涉及很复杂的交互场景,注册时会有用户判断是否已存在)。

(2),用户登录成功,进入笔记管理系统的后台(笔记模块的增删改查功能)。

(3),用户可以具有简单的权限划分(管理员,注册用户)。

(4),界面比较简单,以学习为主。

三,开始设计应用(第一部分)

(1),建立用户登录页面,代码如下:

复制代码代码如下:doctype html html标题BigBear记事本应用登录/title meta Content=' IE=8 ' http-equiv=' X-UA-Compatible '/meta http-equiv=' Content-Type ' Content=' text/html;charset=UTF-8 '样式类型=' text/CSS ' .注释-标题{边距-底部: 45px背景: # 6699ccfont-size : 14px字体粗细:加粗;color : # ffffont-family : arial;高度: 24px行高: 24px } a { color : # 336699 font-family : arial;字号: 14px字体粗细:加粗;}/style脚本src=' http : js/index。js '/脚本/头体div class=' note-title ' bigbar记事本应用登录/div表单操作='/login '方法=“后”跨度用户名:/span put type=' text ' name=' name '/br/br/span密码:/span put type=' password ' name=' password '/input type=' submit ' value='登录/a href='reg.html '我要注册a/表单/正文/html

效果图:

(2),建立用户注册页面,代码如下:

复制代码代码如下:doctype html html标题BigBear记事本应用注册/title meta Content=' IE=8 ' http-equiv=' X-UA-Compatible '/meta http-equiv=' Content-Type ' Content=' text/html;charset=UTF-8 '样式类型=' text/CSS ' .注释-标题{边距-底部: 45px背景: # ff3300font-size : 14px字体粗细:加粗;color : # ffffont-family : arial;高度: 24px行高: 24px}/style脚本src=' http : js/index。js '/脚本/头体div class=' note-title ' bigbar记事本应用注册/div表单操作='/reg '方法=“后”跨度用户名:/span put type=' text ' name=' name '/br/br/span密码:/spaninput type=' password ' name=' password '/br/br/input type=' submit ' value='注册//表单/正文/html效果图:

(3),建立“Mongodb”连接代码,如下:

复制代码代码如下: var MongoDB=required(' MongoDB ');定义变量服务器=新mongodb .服务器(' localhost ',27017,{ auto _ reconnect : true });var conn=new mongodb .Db('bb ',服务器,{ safe : true });conn.open(函数(错误,db){ if(错误)抛出错误;console.info('mongodb已连接!') ;}) ;exports=module.exports=conn

(4),建立模型实体类"用户",如下:

复制代码代码如下:var conn=require('./conn ');函数用户(用户){这。名称=用户['名称'];this.password=用户['密码'];} ;User.prototype.save=函数(回调){ var=thisconn.collection('users ',{ safe : true },function(error,collection){ if(error)返回conn . close();collection.findOne({ //判断此用户是否存在name : that.name },函数(错误,用户){ if(错误)返回conn . close();if(!用户){集合。插入({ name :name ' ',password : that.password '' },{ safe : true },function(错误,用户){ if(错误)返回conn . close();回调回调(用户);conn . close();}) ;} else{ callback('用户已注册!') ;} }) ;}) ;} ;User.login=函数(名称、密码、回调){ conn.collection('users ',{ safe : true },function(错误、集合){ if(错误)返回conn . close();收藏。findone({ name : name,password : password }),function(error,user){ if(error)return conn . close();回调回调(用户);conn . close();}) ;}) ;} ;导出=模块。导出=用户;

效果图:

(5),建立应用程序“app”,如下:

复制代码代码如下://app。jsvar connect=require(' ./lib/connect ');var user=require(' ./models/user’);var app=连接。CreateServer();应用程序.使用(connect.logger('dev ').请使用(connect.query()).使用(connect.bodyParser()).使用(connect.cookieParser()).使用(连接。静态(_ dirname/' view ').请使用(连接。静态(_ dirname/' public ').使用('/login ',函数(请求,响应,下一步){ var name=request。正文[' name '];var密码=请求。正文['密码'];user.login(名称,密码,函数(用户){ if(用户){ response.end('欢迎使用: '用户['姓名'] ' ^_^.') ;} else{ response.end('User: '名称“不注册!”) ;} }) ;}).使用('/reg ',函数(请求,响应,下一步){ var name=request。正文[' name '];var密码=请求。正文['密码'];新用户({ name : name,password : password }).save(function(user){ if(user user [' name ']){ response。结束('用户: '名称'注册完成!') ;} else{ response.end('User: '名称'已注册!') ;} }) ;}).侦听(8888,函数(){ console.log('运行在端口- 8888上的网络服务器')) ;}) ;

说明一下:

(1)“连接。query()"-处理"得到"请求参数解析。

(2)“连接。body parser()"-处理《邮报》请求参数解析。

(3)“连接。静态(_ dirname/' view ')、连接。静态(_ dirname/' public ')

分别代表模板视图" html "以及静态资源如js、css、jpg、gif的资源目录。

以下是这个应用的目录结构:

四,总结一下

(1),掌握NodeJs操作数据库的基本操作语句。

(2),划分层级,如模型,视图,路由。

(3),不断优化和修改本文的例子(比如注册验证用户是否存在,可以独立出"用户管理器"做一层代理完成用户验证和保存的动作)。

(4),明天继续完成后续的功能,尽请期待。

版权声明:NodeJS学习笔记之连接中间件应用实例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。