koa2搭建注册用户后台(一)—— 配置数据库链接、创建schema、modules、controllers

116 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

koa2+sequelize+mysql2搭建后台

本文章是根据以下链接进行二次开发,案例有所改变,将最主要的提取了出来,若需更详细的可看以下链接的文章

www.jianshu.com/p/3e35db2c8…

ko2正常启动项目后即可开始以下

先安装sequelize+mysql2

npm install sequelize --save
npm install mysql mysql2 --save

搭建流程

1.配置Sequelize的数据库链接

创建config目录,目录中创建db.js,连接数据库

//db.js
const Sequelize = require('sequelize');
const sequelize = new Sequelize('dbname','dbusername','password',{
    host:'localhost',
    dialect:'mysql',
    operatorsAliases:false,
    dialectOptions:{
        //字符集
        charset:'utf8mb4',
        collate:'utf8mb4_unicode_ci',
        supportBigNumbers: true,
        bigNumberStrings: true
    },
    pool:{
        max: 5,
        min: 0,
        acquire: 30000,
        idle: 10000
    },
    timezone: '+08:00'  //东八时区
});

module.exports = {
    sequelize
};
})

代码可以直接使用,只需要将代码中实例化Sequelie对象语句中的dbname更改为你的数据库名,dbusername更改为你的数据库用户名,passoword更改为你的数据库密码,其中数据库名和数据库用户名不能为空,密码可以为空,为空时则为空的字符串就可以了。

2.创建schema、modules、controllers schema:数据表模型实例 modules:实体模型 controllers:控制器

3个目录下分别创建users.js

在这里插入图片描述 3.schema数据表模型 在schema目录下新建一个article.js文件,该文件的主要作用就是建立与数据表的对应关系,也可以理解为代码的建表。

表结构:

字段说明是否必填
id用户自增ID,主键否,自动填
loginName登录名
pwd密码
email邮箱
avatarUrl用户头像地址
headline用户简介

这里有两个非必填的值,是一个伏笔,为了实现还花了点时间

在schema目录下的users.js用来创建数据表模型的,也可以理解为创建一张数据表,代码如下:

const moment = require("moment");
module.exports = function (sequelize, DataTypes) {
  return sequelize.define('users', {
    id: {
      type: DataTypes.INTEGER.UNSIGNED,
      primaryKey: true,
      allowNull: true,
      autoIncrement: true
    },
    //登录名
    loginName: {
      type: DataTypes.CHAR,
      allowNull: false,
      field: 'loginName'
    },
    //密码
    pwd: {
      type: DataTypes.CHAR,
      allowNull: false,
      field: 'pwd'
    },
    //邮箱
    email: {
      type: DataTypes.CHAR,
      allowNull: false,
      field: 'email'
    },
    //用户头像地址
    avatarUrl: {
      type: DataTypes.TEXT,
      allowNull: true,
      field: 'avatarUrl'
    },
    //用户简介
    headline: {
      type: DataTypes.CHAR,
      allowNull: true,
      field: 'headline'
    },
    // 创建时间
    createdAt: {
      type: DataTypes.DATE
    },
    // 更新时间
    updatedAt: {
      type: DataTypes.DATE
    }
  }, {
    /**
     * 如果为true,则表示名称和model相同,即user
     * 如果为fasle,mysql创建的表名称会是复数,即users
     * 如果指定的表名称本身就是复数,则形式不变
     */
    freezeTableName: true
  });
}