安装mysql及mysql图形化界面管理工具navicat
- 方法一:在mysql官网与navicat官网下载并安装
- 方法二:下载xampp,内置mysql
- 方法三:直接下载安装(内附教程)链接: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 更新 风险
注:
一个用户对一个微信小程序有一个openid,即你换了一个小程序,你的openid是会改变的
对于所有的小程序、公众号,用户都有一个唯一的标识: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中输入用户信息
即可看到