koa2系列教程,持续更新koa2系列教程:初看koa2应用koa2系列教程:koa2处理静态文件koa2系列教程:koa2使用模板引擎koa2系列教程:koa2路由控制中间件系列教程:koa2实现登录和注册功能。这里主要是结合前几天的内容,做一个实际案例。版本:项目结构:前几天,我们实现了注册登录页面demo。今天我们主要实现这几个内容注册新用户判断邮箱是否已经注册和登录判断登录时密码是否正确本篇是在之前代码的基础上增加的,我们将展示主要代码1.编辑user.js//db/user.jsconstmongoose=require('./db')constSchema=mongoose.Schema;constceshiSchema=newSchema({email:String,name:String,password:String});constMyModel=mongoose.model('User',ceshiSchema);classUserdb{constructor(){}//queryquery(obj={}){returnnewPromise((resolve,reject)=>{MyModel.find(obj,(err,res)=>{if(err){reject(err)}resolve(res)})})}queryEmail(em){returnnewPromise((resolve,reject)=>{MyModel.find({email:em},(err,res)=>{if(err){reject(err)}constlen=res.lengthif(len>=1){//resolve(res)存在}else{//resolve(null)不存在}})})}//savesave(obj){constm=newMyModel(obj)returnnewPromise((resolve,reject)=>{m.save((err,res)=>{if(err){reject(err)}resolve(res)console.log(res)})})}}module.exports=newUserdb()上面主要是查询用户和保存用户2.编辑登录注册路由//router/index.jsconstRouter=require('koa-router')//constUser=require('../db/user')consthome=newRouter()home.get('/',async(ctx)=>{lettitle='Home'awaitctx.render('index',{title})})//子路由2constpage=newRouter()page.get('/404',async(ctx)=>{lettitle="404"awaitctx.render('err',{title})})constlogin=newRouter()login.get('/',async(ctx)=>{lettitle="login"awaitctx.render('login',{title})}).post('/',异步(tx)=>{constdata=ctx.request.bodyletqueryres=awaitUser.queryEmail(data.email)console.log(queryres)if(queryres){if(queryres[0].password===data.password){ctx.body={'code':1,'data':queryres[0],'mesg':'登录成功'}}else{ctx.body={'code':0,'data':{},'mesg':'密码错误'}}}else{ctx.body={'code':0,'data':{},'mesg':'没有该用户,请注册'}}})constregister=newRouter()register.get('/',async(ctx)=>{lettitle="register"awaitctx.render('register',{title})}).post('/',async(ctx)=>{constdata=ctx.request.bodyletqueryres=awaitUser.queryEmail(data.email)if(queryres){ctx.body={'code':0,'data':{},'mesg':'邮件Boxalreadyexists'}}else{awaitUser.save(data)ctx.body={'code':1,'data':{},'mesg':'保存成功'}}})//加载所有Sub-routingletrouter=newRouter()router.use('/',home.routes(),home.allowedMethods())router.use('/page',page.routes(),page.allowedMethods())router.use('/login',login.routes(),login.allowedMethods())router.use('/register',register.routes(),register.allowedMethods())module.exports=router3.Edit索引.jsconstKoa=require('koa')constviews=require('koa-views')conststatics=require('koa-static')constbodyparser=require('koa-bodyparser')constpath=require('path')constrouter=require('./router')constapp=newKoa()conststaticPath='./static'app.use(statics(path.join(__dirname,staticPath)))app.use(bodyparser())//加载模板引擎app.use(views(path.join(__dirname,'./views'),{extension:'ejs'}))//加载路由中间件app.use(router.routes()).use(router.allowedMethods())app.listen(3000,()=>{console.log('localhost:3000')})这个和前面的内容添加koa-bodyparser分析post数据,使用ctx.request.body获取4.启动服务节点索引.js打开浏览器localhost:3000尝试登录注册。打开控制台,可以看到相关后台返回的数据。这篇文章结束了。下一篇文章将使用session来判断登录状态。侠盗飞车/...