1.安装nodejs
2.安装koa
npm install koa --save
3.安装koa2项目生成器
npm install koa-generator -g
4.生成项目
koa2 <项目名称>
5.下载node-Modules
npm install
6.此时项目已经生成,并可以运行,还需要sequelize
npm start
7.安装sequelize
npm install sequelize --save
8.安装mysql mysql2
npm install mysql mysql2 --save
依赖已经下载完毕,可以进行文件的配置
9生成文件
10.数据库连接
在config文件下新建db.js
const Sequelize = require('sequelize');
const sequelize = new Sequelize('data-base', 'root', 'root', {
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:Sequelize,
};
11.创建数据库映射文件
在schema文件夹下user.js,该文件的主要作用就是建立与数据表的对应关系,也可以理解为代码的建表。
module.exports = function (sequelize, DataTypes) {
return sequelize.define('user', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV1,
primaryKey: true
},
username: DataTypes.STRING,
password: DataTypes.STRING,
createdAt: {
type: DataTypes.DATE
},
updatedAt: {
type: DataTypes.DATE
}
}, {
freezeTableName: true
});
}
12.模型应用、使用
在config/db.js文件中新增
const Sequelize = require('sequelize');
const sequelize = new Sequelize('data-base', 'root', 'root', {
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' //东八时区
});
const user = require('../schema/user')(sequelize, Sequelize.DataTypes);
module.exports = {
Sequelize:Sequelize,
user:user
};
在项目中modules目录下创建user.js文件,为用户信息表,该文件对数据库数据进行操作。
const user = require('../config/db').user;
module.exports = {
async findOne(username){
return await user.findOne({where:{username:username}})
},
async create(userInfo){
return user.create(userInfo);
}
}
13.Controller 控制器
在controllers文件夹里新建user.js,主要是对逻辑的处理
const UserModule = require('../modules/user')
const md5 = require('md5')
module.exports = {
async create(ctx) {
const content = ctx.request.body;
const isExistUser = await UserModule.findOne(content.username);
if (isExistUser) {
ctx.throw(200, {errorCode: 1, message: '用户名重复'})
}
content.password = md5(content.password)
await UserModule.create(content);
ctx.body = {errorCode: 0};
}
}
14.路由
在routes文件夹中新建user.js文件,有关user接口请求的路由都在这个文件里面
const router = require('koa-router')()
const userController = require('../controllers/user')
// 用户
router.prefix('/user')
//创建用户
router.post('/create', userController.create);
module.exports = router
15.在app.js引用路由文件
在app.js中添加引用路由代码
const user = require('./routes/user')
app.use(user.routes(),user.allowedMethods())
16.允许跨域
const cors = require('koa-cors')
app.use(cors()) //使用cors