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

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

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

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

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

版本:

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

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

  • 注冊(cè)新用戶
  • 判斷該郵箱是否注冊(cè)過(guò)
  • 登錄判斷是否注冊(cè)過(guò)
  • 登錄時(shí)的密碼的正確

本文代碼地址: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.編輯 登錄注冊(cè)路由

// router/index.js

const Router = require('koa-router')


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

home.get('/', async (ctx) => {
 let title = '首頁(yè)'
 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': '密碼錯(cuò)誤'
   }
  }
  
 }else {
  ctx.body = {
   'code': 0,
   'data': {},
   'mesg': '沒(méi)有該用戶,去注冊(cè)吧'
  }
 }
})

const register = new Router()

register.get('/', async (ctx) => {
 let title = "注冊(cè)"
 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')
})

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

4.啟動(dòng)服務(wù)

node index.js

打開(kāi)瀏覽器localhost:3000

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

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

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

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

相關(guān)文章

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

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

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

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

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

    node.js中koa和express的差異對(duì)比

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

    Node.js基礎(chǔ)模塊babel使用詳解

    這篇文章主要介紹了Node.js基礎(chǔ)模塊babel使用詳解,babel是由一系列的組件構(gòu)成,所以我們?cè)陂_(kāi)發(fā)過(guò)程中,要從自行配置組件來(lái)開(kāi)始使用babel的功能
    2022-06-06
  • 配置node服務(wù)器并且鏈接微信公眾號(hào)接口配置步驟詳解

    配置node服務(wù)器并且鏈接微信公眾號(hào)接口配置步驟詳解

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

    NVM安裝nodejs的方法實(shí)用步驟

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

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

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

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

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

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

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

    nodejs 全局變量和全局對(duì)象知識(shí)點(diǎn)及用法詳解

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

最新評(píng)論

岳西县| 满洲里市| 颍上县| 玛曲县| 新余市| 普洱| 来宾市| 洪雅县| 甘泉县| 长宁县| 蓝山县| 陵川县| 安岳县| 扬州市| 图们市| 临江市| 文安县| 赫章县| 清丰县| 红桥区| 淅川县| 环江| 六安市| 贵南县| 马鞍山市| 漯河市| 车致| 金湖县| 泸西县| 和平县| 垫江县| 宁武县| 海盐县| 永福县| 民丰县| 佛教| 石家庄市| 定陶县| 咸宁市| 灵武市| 抚州市|