koa2系列教程:koa2完成登录注册功用

koa2系列教程,延续更新

这个重要连系头几天的内容,做个现实案例的结果

版本:

《koa2系列教程:koa2完成登录注册功用》

项目构造:

《koa2系列教程:koa2完成登录注册功用》

头几天,我们把注册和登录的页面demo完成了,本日我们重要完成这么几个内容

  • 注册新用户
  • 推断该邮箱是不是注册过
  • 登录推断是不是注册过
  • 登录时的暗码的准确

本文代码地点:https://github.com/xiaqijian/…

来日诰日,我们将应用session完成登录状况推断

本日的这篇是在之前的代码基础上增加的,我们就晒重要的代码

1.编辑user.js

// db/user.js
const mongoose = require('./db')
const Schema = mongoose.Schema;

const ceshiSchema = new Schema({
  email: String,
  name: String,
  password: String
});

const MyModel = mongoose.model('User', ceshiSchema);


class Userdb {
  constructor () {

  }
// 查询
  query (obj = {}) {
     return new Promise((resolve, reject) => {
       MyModel.find(obj, (err, res) => {
         if(err) {
           reject(err)
         }
         resolve(res)
       })
     })
  }
queryEmail (em) {
   return new Promise((resolve, reject) => {
     MyModel.find({email: em}, (err, res) => {
       if(err) {
         reject(err)
       }
       const len = res.length
       if(len >= 1){
         // 存在
         resolve(res)
       }else {
         // 不存在
         resolve(null)
       }
     })
   })
}
// 保留
  save (obj) {
     const m = new MyModel(obj)
     return new Promise((resolve, reject)=> {
       m.save((err, res) => {
         if (err) {
           reject(err)
         }
         resolve(res)
         console.log(res)
       })
     })
     
  }
}
module.exports = new Userdb()

上面重要查询用户,和保留用户

2.编辑 登录注册路由

// router/index.js

const Router = require('koa-router')


// 
const User = require('../db/user')
const home = new Router()

home.get('/', async (ctx) => {
    let title = '首页'
    await ctx.render('index', {
        title
    })
})


// 子路由2
const page = new Router()

page.get('/404', async (ctx) => {
    let title = "404"
    await ctx.render('err', {
        title
    })
})


const login = new Router()

login.get('/', async (ctx) => {
    let title = "登录"
    await ctx.render('login', {
        title
    })
}).post('/', async (ctx) => {
    const data = ctx.request.body
    let queryres = await User.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': '没有该用户,去注册吧'
        }
    }
})

const register = new Router()

register.get('/', async (ctx) => {
    let title = "注册"
    await ctx.render('register', {
        title
    })
}).post('/', async (ctx) => {
    const data = ctx.request.body
    let queryres = await User.queryEmail(data.email)
    if (queryres) {
        ctx.body = {
            'code': 0,
            'data': {},
            'mesg': '该邮箱已存在哦'
        }
    }else {
        await User.save(data)
        ctx.body = {
            'code': 1,
            'data': {},
            'mesg': '保留胜利'
        }
    }
   
})

// 装载一切子路由
let router = new Router()
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 = router

3.编辑index.js

const Koa = require('koa')
const views = require('koa-views')
const statics =  require('koa-static')
const bodyparser = require('koa-bodyparser')
const path = require('path')
const router =  require('./router')
const app = new Koa()

const staticPath = './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.启动效劳

node index.js

翻开浏览器localhost:3000

尝试去登录注册一下,翻开掌握台,就能够看得到相干背景返回的数据

《koa2系列教程:koa2完成登录注册功用》

《koa2系列教程:koa2完成登录注册功用》

本文完毕,下次文章应用session对登录状况的推断

本文代码地点:https://github.com/xiaqijian/…

本文首发于:node前端

无妨关注一下

    原文作者:MrIsaac
    原文地址: https://segmentfault.com/a/1190000017229376
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞