一、简介
目前的注册功能可以成功的把数据存入数据库中,但是我们要实现的是具有登录,注册并且要往数据库存储前端所需要的数据的一个后台管理系统,所以对于注册,登录要有的功能就必须有获取数据库里的数据,以及页面跳转的基本功能。
二、获取数据 —— promise
在添加数据的时候,就设置好如果添加成功,就返回添加的数据。
function reg(params) {//注册时添加数据的方法 return new Promise((resolve,reject)=>{//resolve 成功之后的回调 reject 失败的回调 adminModel.create(params,(err,data)=>{ if(err){ reject({//添加失败返回的数据 errno:500, msg:'数据库错误', data:null }) }else{ resolve({//添加成功返回的数据 errno:0, msg:'OK', data:data }) } }) }) };
在注册的 post 操作里调用添加注数据的 reg 方法之后,使用 .then 方法获取 promise 所返回的数据
adminModel.reg(postData).then((data)=>{ console.log(data);//输出获取到的数据 })
注:现在就是针对注册的数据进行操作,所以下面所有的操作都是在 regPost 方法里操作
三、页面跳转
在获取到数据之后,就可以通过判断返回的错误码来确定要跳转的页面。
adminModel.reg(postData).then((data)=>{ console.log(data); if(!data.errno){ res.redirect('/login');//注册成功之后重定向到登录页面 }else{ res.redirect('/reg');//不成功就还是在当前注册页面 } })
四、跳转成功与否的提示信息
下载依赖模块:
npm install connect-flash --save
在项目中调用:
var flash = require('connect-flash');//引入模块 //这个模块是依赖于session 所以必须在session下面使用 app.usr(flash());
这样就可以在全局使用这个模块的方法,但是注意,这个提示信息是点击的注册按钮之后,再提示是否操作成功,所以在经过一系列操作之后,最后都进入了入口文件,所以在主路由 routes 上边截取成功与否的数据
app.use((req,res,next)=>{ res.locals.success = req.flash('success'); res.locals.error = req.flash('error'); console.log(res.locals.success,res.locals.error); next(); })
然后在所有跳转操作完成之后,获取在经过主路由是获取的成功与否的提示信息:
adminModel.reg(postData).then((data)=>{ if(!data.errno){ req.flash('success',data.msg)//传两个参数时是 给success存值 res.redirect('/login'); }else{ req.flash('error',data.msg); res.redirect('/reg'); } })
注:这样带过来的数据只是为了记录上一次操作的状态,所以只会存在一次,也就是刷新之后数据就没有了
现在有了成功或者失败的提示字段了,紧接着就要把它渲染到页面了,因为它不止注册的时候要用,所以把他封装到一个单独的文件夹里:
//封装的提示信息 <%if(success.length!=0){%> <div class="alert alert-success" role="alert"><%=success%></div> <%}%> <%if(error.length!=0){%> <div class="alert alert-danger" role="alert"><%=error%></div> <%}%>
然后就在要用到它的页面调用就好了:
<%include ../public/success-error.html%>
补一张效果图: