第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【金秋打卡】第23天 《Node.js+Koa2+MySQL 打造前后端分離精品項(xiàng)目》

標(biāo)簽:
Node.js JavaScript

课程名称:Node.js+Koa2+MySQL打造前后端分离精品项目《旧岛》

课程章节:第5章 LinValidator校验器与Sequelize Orm生成MySQL数据表

                第6章 【构建用户身份系统】通用用户系统与小程序用户系统

视频:5-9 LinValidator综合应用

            6-1 用户注册与Sequelize新增数据

课程讲师: 七月

课程内容:

//validator.js
//这是用于校验的代码,注意新增加的RegisterValidator方法
//可以自定义函数validatePassword来比较两次密码输入的是否一致

const { LinValidator, Rule } = require('../../core/lin-validator')

class PositiveIntegerValidator extends LinValidator {
    constructor() {
        //super()
        this.id = [
            new Rule('isInt', '需要是正整数', {min:1})
        ]
    }
}

class RegisterValidator extends LinValidator {
    constructor() {
        super()
        this.email = [
            new Rule('isEmail', '不符合email规范')
        ]
        this.password1 = [
            new Rule('isLength', '密码6~32个字符', { min: 6, max: 32 }),
            new Rule('matches', '密码不符合规范', '^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]')
        ]
        this.password2 = this.password1
        this.nickname = [
            new Rule('isLength', '昵称不符合长度规范', { min: 6, max: 32 })
        ]
    }

    validatePassword(vals) {
        const psw1 = vals.body.password1
        const psw2 = vals.body.password2
        if (psw1 !== psw2) {
            throw new Error('两个密码必须相同')
        }
    }
}

module.exports = {
    PositiveIntegerValidator,
    RegisterValidator
}
//当使用不正确的参数调用接口时,会得到如下返回
{
    "msg": [
        "email字段是必填参数",
        "password1字段是必填参数",
        "password2字段是必填参数",
        "nickname字段是必填参数"
    ],
    "error_code": 10000,
    "request": "POST /v1/user/register"
}

异步编程有一个问题是发现错误,调试的时候比较困难。

验证器可以想象成是一个守门员。如果参数不符合规范,验证器会像一个守门员一样守住这道门。如果没有守住,后边如果是向数据库中写值,数据库就会报错。

const Router = require('koa-router')
const { RegisterValidator } = require('../../validator/validator')
const { User } = require('../../models/user')

const router = new Router({
    prefix: '/v1/user'
})

//注册
router.post('/register', async (ctx) => {
    //接收参数->校验参数
    console.log(ctx)
    const v = new RegisterValidator().validate(ctx)
    console.log(v)
    const user = {
        email: v.get('body.email'),
        password: v.get('body.password1'),
        nickname: v.get('body.nickname')
    }
    const r = await User.create(user)



})

module.exports = router

user.js中

    可以在Router中设置 prefix 是url的前缀,此时 前缀+ router.post中的第一个参数,是完整的url地址

    之后先校验参数, 参数校验不通过会弹出提示信息,参数校验通过,则可以用User.create方法把数据写入数据库。


课程收获:

这节课讲了LinValidator的综合应用。用‘用户注册’当做例子,讲解了验证器的创建,验证规则的编写。验证规则中,使用自定义函数来验证两个密码是否一致等功能。 后一章节讲解了如何提交数据到数据库。


七月老师非常注重在讲编程知识的同时,讲编程思维,讲知识和知识之间的关系。编程是实践性非常强的工作,学习知识最好的方法是放到项目中。做项目的目的不是做项目,最终要做出来自己的项目,业务承载的是编程知识。明天继续刷后边的课程。


https://img1.sycdn.imooc.com//6373a6430001eafa10180631.jpg

https://img1.sycdn.imooc.com//6374ebda0001269110050625.jpg


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消