node.js、koa2开发微信小程序后端(四)

安装mysql及mysql图形化界面管理工具navicat

  1. 方法一:在mysql官网navicat官网下载并安装
  2. 方法二:下载xampp,内置mysql
  3. 方法三:直接下载安装(内附教程)链接:https://pan.baidu.com/s/1UWb8HaQhyUHrVlKHd8KrhA
    提取码:f07r
    复制这段内容后打开百度网盘手机App,操作更方便哦

启动Navicat for MySQL

点击连接

连接成功之后如图所示

Sequelize连接数据库

在core文件夹下新建db.js

//Sequelize连接数据库 配置一些数据库的参数
const Sequelize = require('sequelize')
const {
    dbName,
    host,
    port,
    user,
    password,
} = require('../config/config').database
const sequelize = new Sequelize(dbName,user,password,{
    dialect:'mysql',
    host,
    port,
    logging:true,
    timezone:'+08:00',
    define:{
        timestamps:true,//create_time update_time
        paranoid:true,
        underscored:true //将所有的驼峰命名转化为下滑线
    }
})

sequelize.sync({
    force:true
    //删除此表再新建一张表
})

module.exports = {
   sequelize
}

在目录下新建config文件夹,存放配置文件

module.exports = {
    environment:'dev',
    database:{
        dbName:'island',
        host:'localhost',
        port:3306,
        user:'root',
        password:'root'
    }

}

新建models文件夹,存放用户模块

const {sequelize} = require('../../core/db')
const {Sequelize,Model} = require('sequelize')

class User extends Model{

}

User.init({//对应mysql的类型
    id:{
        //并发,1000 注册
        //曝露 用户编号 1,2,3,4,5
        //即使别人知道用户编号,也无法做坏事
        //接口保护 权限 反问接口
        type:Sequelize.INTEGER,
        primaryKey:true, //主键
        autoIncrement:true
    },
    nickname:Sequelize.STRING,
    email:Sequelize.STRING,
    password:Sequelize.STRING,
    openid:{
        type:Sequelize.STRING(64),
        unique:true
    }
},{
    sequelize,
    tableName:'user'
})

//数据迁移 SQL 更新 风险

注:

  1. 一个用户对一个微信小程序有一个openid,即你换了一个小程序,你的openid是会改变的

  2. 对于所有的小程序、公众号,用户都有一个唯一的标识:unionID

app.js中导入user.js模块

require('./app/models/user')

此时打开navicat,在“表”处右键刷新表,即可看到

user表被创建。打开user表,如如所示

校验用户信息

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.passworld1 = [
            //
            new Rule('isLength','密码至少6个字符,最多32个字符',{
                min:6,
                max:32
            }),
            new Rule('matches','密码不符合规范','^(?![0-9]+$)(?![a-zA-Z+$])[0-9A-Za-z]')
        ]
        this.passworld2 = this.passworld1
        this.nickname = [
            new Rule('isLength','昵称不符合长度规范',{
                min:4,
                max:32
            }),
        ]
    }
    validatePassword(vals){
        const psw1 = vals.body.passworld1
        const psw2 = vals.body.passworld2
        if(psw1 !== psw2){
            throw new Error('两个密码必须相同') 
        }
    }
}

module.exports = {
    PositiveIntegerValidator,
    RegisterValidator
}

编写用户接口

const Router = require('koa-router')
const {RegisterValidator} = require('../../validator/validator')
const router = new Router({
    prefix:'/v1/user'//指定路由前缀
}) 

//用户注册
//新增数据 post  更新数据 put  查询数据 get
router.post('/register',async(ctx)=>{
    //思维路径
    //接收参数  校验
    //
    const v = new RegisterValidator().validate(ctx)
})

module.exports = router

修改全局异常处理条件

const isDev = global.config.environment

        if(isDev && !error.errorCode){
            throw error
        }

在postman中POSTlocalhost:3000/v1/user/register

body中输入用户信息

即可看到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值