最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

版本:

項目結(jié)構:

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

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

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

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

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

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.啟動服務

node index.js

打開瀏覽器localhost:3000

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

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

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

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

您可能感興趣的文章:

相關文章

  • 利用Node.js和MySQL實現(xiàn)創(chuàng)建API服務器

    利用Node.js和MySQL實現(xiàn)創(chuàng)建API服務器

    這篇文章主要為大家詳細介紹了如何使用Node.js和MySQL創(chuàng)建API服務器的步驟,這也是從前端邁向全棧的一個開始,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2024-01-01
  • node.js中格式化數(shù)字增加千位符的幾種方法

    node.js中格式化數(shù)字增加千位符的幾種方法

    這篇文章主要介紹了node.js中格式化數(shù)字增加千位符的幾種方法,本文給出3種實現(xiàn)方法,并分別給出實例代碼,需要的朋友可以參考下
    2015-07-07
  • node.js中koa和express的差異對比

    node.js中koa和express的差異對比

    Express和koa都是服務端的開發(fā)框架,服務端開發(fā)的重點是對HTTP Request和HTTP Response兩個對象的封裝和處理,下面這篇文章主要給大家介紹了關于node.js中koa和express的差異對比,需要的朋友可以參考下
    2023-05-05
  • Node.js基礎模塊babel使用詳解

    Node.js基礎模塊babel使用詳解

    這篇文章主要介紹了Node.js基礎模塊babel使用詳解,babel是由一系列的組件構成,所以我們在開發(fā)過程中,要從自行配置組件來開始使用babel的功能
    2022-06-06
  • 配置node服務器并且鏈接微信公眾號接口配置步驟詳解

    配置node服務器并且鏈接微信公眾號接口配置步驟詳解

    這篇文章主要介紹了配置node服務器并且鏈接微信公眾號接口配置步驟詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下
    2019-06-06
  • NVM安裝nodejs的方法實用步驟

    NVM安裝nodejs的方法實用步驟

    安裝node的方式有很多種,本文主要介紹了NVM安裝nodejs的方法實用步驟,希望能幫助大家來解決問題,感興趣的小伙伴們可以參考一下
    2019-01-01
  • mongodb初始化并使用node.js實現(xiàn)mongodb操作封裝方法

    mongodb初始化并使用node.js實現(xiàn)mongodb操作封裝方法

    這篇文章主要介紹了mongodb初始化并使用node.js實現(xiàn)mongodb操作封裝方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • nodejs實現(xiàn)發(fā)送郵箱驗證碼功能

    nodejs實現(xiàn)發(fā)送郵箱驗證碼功能

    這篇文章主要為大家詳細介紹了nodejs實現(xiàn)發(fā)送郵箱驗證碼功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 使用node-canvas在服務端渲染echarts圖表解析

    使用node-canvas在服務端渲染echarts圖表解析

    這篇文章主要介紹了使用node-canvas在服務端渲染echarts圖表解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • nodejs 全局變量和全局對象知識點及用法詳解

    nodejs 全局變量和全局對象知識點及用法詳解

    在本篇文章里小編給大家整理的是一篇關于nodejs 全局變量和全局對象知識點及用法等內(nèi)容,對此有興趣的朋友們可以學習參考下。
    2021-12-12

最新評論

桃源县| 灯塔市| 富宁县| 清原| 谢通门县| 沽源县| 泸水县| 新巴尔虎右旗| 湘潭县| 广宗县| 扎囊县| 扎兰屯市| 资中县| 黄大仙区| 海安县| 封开县| 定边县| 延庆县| 东乌珠穆沁旗| 子洲县| 定兴县| 苏尼特左旗| 体育| 阿巴嘎旗| 安新县| 蓝田县| 天柱县| 陇川县| 垦利县| 三门峡市| 栖霞市| 三河市| 墨江| 绥阳县| 新宁县| 彰化县| 西畴县| 阜新市| 双峰县| 江山市| 沁源县|