国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

koa2實現登錄注冊功能的示例代碼

2019-11-19 12:25:36
字體:
來源:轉載
供稿:網友

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

這個主要結合前幾天的內容,做個實際案例的效果

版本:

項目結構:

前幾天,我們把注冊和登錄的頁面demo實現了,今天我們主要實現這么幾個內容

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

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

明天,我們將利用session實現登錄狀態判斷

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

1.編輯user.js

// db/user.jsconst 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.jsconst Router = require('koa-router')// const User = require('../db/user')const home = new Router()home.get('/', async (ctx) => { let title = '首頁' await ctx.render('index', {  title })})// 子路由2const 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

嘗試去登錄注冊一下,打開控制臺,就可以看得到相關后臺返回的數據

本文結束,下次文章利用session對登錄狀態的判斷

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南郑县| 雷山县| 安义县| 福州市| 康乐县| 铅山县| 山东省| 梅河口市| 西畴县| 乌拉特中旗| 定襄县| 宜君县| 习水县| 始兴县| 阜平县| 广州市| 松潘县| 山东| 宜昌市| 陵水| 白山市| 乐安县| 六枝特区| 宁津县| 扎囊县| 中卫市| 屏边| 安泽县| 三穗县| 武城县| 蕲春县| 公主岭市| 景谷| 石狮市| 抚远县| 宜州市| 日土县| 六枝特区| 盈江县| 前郭尔| 静乐县|