欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

koa2實(shí)現(xiàn)登錄注冊功能的示例代碼

 更新時間:2018年12月03日 09:53:54   作者:MrIsaac  
這篇文章主要介紹了koa2實(shí)現(xiàn)登錄注冊功能的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文介紹了koa2實(shí)現(xiàn)登錄注冊功能的示例代碼,分享給大家,具體如下:

這個主要結(jié)合前幾天的內(nèi)容,做個實(shí)際案例的效果

版本:

項(xiàng)目結(jié)構(gòu):

前幾天,我們把注冊和登錄的頁面demo實(shí)現(xiàn)了,今天我們主要實(shí)現(xiàn)這么幾個內(nèi)容

  • 注冊新用戶
  • 判斷該郵箱是否注冊過
  • 登錄判斷是否注冊過
  • 登錄時的密碼的正確

本文代碼地址:https://github.com/xiaqijian/koa2-lessons/tree/master/lesson6

明天,我們將利用session實(shí)現(xiàn)登錄狀態(tài)判斷

今天的這篇是在之前的代碼基礎(chǔ)上添加的,我們就曬主要的代碼

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': '該郵箱已經(jīng)存在哦'
  }
 }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')
})

這個和之前的內(nèi)容增加了koa-bodyparser對post數(shù)據(jù)的解析,利用ctx.request.body獲取

4.啟動服務(wù)

node index.js

打開瀏覽器localhost:3000

嘗試去登錄注冊一下,打開控制臺,就可以看得到相關(guān)后臺返回的數(shù)據(jù)

本文結(jié)束,下次文章利用session對登錄狀態(tài)的判斷

本文代碼地址:https://github.com/xiaqijian/koa2-lessons/tree/master/lesson6

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論