精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網(wǎng)站建設(shè)資訊

NEWS

網(wǎng)站建設(shè)資訊

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

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

創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)服務(wù),網(wǎng)站設(shè)計(jì),成都網(wǎng)站托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出創(chuàng)新互聯(lián)建站

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

版本:

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

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

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

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

  • 注冊(cè)新用戶
  • 判斷該郵箱是否注冊(cè)過
  • 登錄判斷是否注冊(cè)過
  • 登錄時(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 = '首頁'
 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': '沒有該用戶,去注冊(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

打開瀏覽器localhost:3000

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

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

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

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


分享名稱:koa2實(shí)現(xiàn)登錄注冊(cè)功能的示例代碼
本文網(wǎng)址:http://m.jcarcd.cn/article/gcdhph.html
主站蜘蛛池模板: 18日韩亚洲 | 韩国电影美人图 | 精品美女 | 九九免费视频网站 | 精品国产一二三 | 国产日本韩国91 | 日韩欧美第一区 | 日本高清一区 | 国产日韩欧美小视频 | 国产真实破 | 日韩淫片一区二区 | 国产乱轮在线观看 | 蜜桃传媒一区二区 | 中文字幕人成 | 午夜亚洲欧 | 国产狂喷潮在线观看 | 日韩欧美一| 九九热国产视频 | 国内自产一区视频 | 国产精品十七区 | 国产精品女同一区二 | 91天堂97清纯小 | 欧美中文日韩亚洲 | 国产不卡在线免费 | 99在线视| 欧美日韩在线不卡 | 国产精品国语 | 国产视频在线 | 欧美中文日韩aⅴ | 国产原创精品在线 | 国产美女精品在线 | 爱豆精品秘国产 | 欧美专区中文字幕 | 九九91精品国产 | 欧美日韩精品二区 | 日韩欧美国产第一页 | 中文字幕乱倫视频 | 日韩制服丝袜电影 | 国产精品视频免费一 | 国产性生大 | 国产极品尤物在线 |