koa 2シリーズ教程:koa 2登録機能を実現します.


koa 2シリーズの教程は、継続的に更新されます.
  • koa 2シリーズ教程:koa 2応用初見
  • koa 2シリーズ教程:Coa 2処理静的ファイル
  • koa 2シリーズ教程:koa 2はテンプレートエンジン
  • を使用しています.
  • koa 2シリーズ教程:koa 2ルーティング制御中間
  • koa 2シリーズ教程:総合koa 2構築登録ページ
  • koa 2シリーズ教程:koa 2登録機能
  • を実現します.
    これは主に先日の内容を結び付けて、実際の判例の効果を作ります.
    バージョン:
    プロジェクト構造:
    先日、私達は登録と登録のページデモを実現しました.今日は主にこのような内容を実現しました.
  • 新しいユーザ
  • を登録する.
  • 、このメールボックスが登録されているかどうかを判断する
  • .
  • 登録したかどうか判断する
  • .
  • ログイン時のパスワードの正しい
  • このコードの住所:https://github.com/xiaqijian/...
    明日、私達はセッションを利用して登録状態の判断を実現します.
    今日のこのページは前のコードに基づいて追加されました.主要コードを晒します.
    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': '        '
            }
        }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によるポストデータの解析を追加し、ctx.request.bodyを用いて取得する.
    4.サービスの開始
    node index.js
    ブラウザを開くlocal host:3000
    登録を試みて、コンソールを開けば、関連したバックグラウンドのデータが見えます.
    本文は終わりです.次の文章はsessionを利用して登録状態を判断します.
    このコードの住所:https://github.com/xiaqijian/...
    この文章は初めてです.nodeの先端です.
    注目してもいいです