koa+sequelize接口
最近学了一下接口,闲来无事简单的写了一下。
此项目首先需要安装koa、koa-router、sequelize、koa-bodyparser、moment 并引入
**index.js文件**
const Koa = require('koa')
const Router = require('koa-router')
const app = new Koa()
const router = new Router();
const bodyparser = require('koa-bodyparser')
app.use(bodyparser())
//引入路由
const createUser = require('./router/creat')
const deleteUser = require('./router/delete')
const updateUser = require('./router/update')
const findAllUser = require('./router/find_all')
router.use('/user', createUser)
.use('/user', deleteUser)
.use('/user', updateUser)
.use('/user', findAllUser)
app.use(router.routes())
.use(router.allowedMethods())
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`server started on ${port}`)
})
用的是navicat数据库,可以运行测试一下是否连接成功
**sequelize文件下面的index.js文件**
const { Sequelize } = require('sequelize');
//'xxl', 'root', 'root'是我的数据库名、用户名和密码,记得改成自己的~
const sequelize = new Sequelize('xxl', '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' //东八时区
})
try {
sequelize.authenticate();
console.log('Connection has been established successfully.');
} catch (error) {
console.log('Unable to connect to the database:', error)
}
module.exports = {
Sequelize,
sequelize
}
**sequelize文件下面的model.js文件**
const { sequelize, Sequelize } = require('./index');
const moment = require('moment');
const User = sequelize.define('User', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
allowNull: true,
autoIncrement: true
},
name: {
type: Sequelize.STRING,
allowNull: false
},
password: {
type: Sequelize.STRING,
allowNull: false
},
// 创建时间
createdAt: {
type: Sequelize.DATE,
defaultValue: new Date(),
get() {
return moment(this.getDataValue('createdAt')).format('YYYY-MM-DD HH:mm:ss');
}
},
// 更新时间
updatedAt: {
type: Sequelize.DATE,
defaultValue: new Date(),
get() {
return moment(this.getDataValue('updatedAt')).format('YYYY-MM-DD HH:mm:ss');
}
}
}, {
timestamps: false,
tableName: 'user'
})
User.sync();
module.exports = User
将方法封装js文件中
**sequelize文件下面的user.js文件**
const User = require('./model')
class ArticleModel {
/**
* 创建
* @param data
*/
static async createUser(data) {
return await User.create({
name: data.name,
password: data.password,
})
}
/**
* 查询
* @param id
*/
static async getUserDetail(id) {
return await User.findOne({
where: {
id,
},
})
}
/**
* 删除
* @param id
*/
static async deleteUser(id) {
return await User.destroy({
where: {
id,
},
})
}
/**
* 修改
* @param id
* @param date
*/
static async updateUser(id, date) {
return await User.update({
name: date.name
}, {
where: {
id,
},
})
}
/**
* 查询所有
* @param id
*/
static async findAllUser() {
return await User.findAll({})
}
/**
* 查询单个
* @param date
*/
static async findOneUser(date) {
return await User.findOne({
where: {
id: date.id
}
})
}
}
module.exports = ArticleModel
**router文件下面的creat.js文件**
const Koa = require('koa')
const Router = require('koa-router')
const app = new Koa()
const router = new Router();
const bodyparser = require('koa-bodyparser')
app.use(bodyparser())
const UserModel = require('../sequelize/user')
router.post('/creat', async(ctx, next) => {
let req = ctx.request.body;
if (req.name && req.password) {
try {
let ret = await UserModel.createUser(req);
let data = await UserModel.getUserDetail(ret.id);
ctx.response.status = 200;
ctx.body = {
code: 200,
msg: '创建成功',
data
}
} catch (err) {
ctx.body = {
code: 200,
msg: '创建失败',
data: err
}
}
} else {
ctx.body = {
code: 200,
msg: '用户名和密码不能为空',
}
}
})
module.exports = router.routes()
**router文件下面的delete.js文件**
const Koa = require('koa')
const Router = require('koa-router')
const app = new Koa()
const router = new Router();
const bodyparser = require('koa-bodyparser')
app.use(bodyparser())
const UserModel = require('../sequelize/user')
router.post('/delete', async(ctx, next) => {
let req = ctx.request.body;
let ret = await UserModel.findOneUser(req);
if (ret) {
try {
let data = await UserModel.deleteUser(ret.id);
ctx.response.status = 200;
ctx.body = {
code: 200,
msg: '删除成功',
}
} catch (err) {
ctx.response.status = 412;
ctx.body = {
code: 200,
msg: '删除失败',
data: err
}
}
} else {
ctx.response.status = 416;
ctx.body = {
code: 200,
msg: '用户id未找到',
}
}
})
module.exports = router.routes()
**router文件下面的update.js文件**
const Koa = require('koa')
const Router = require('koa-router')
const app = new Koa()
const router = new Router();
const bodyparser = require('koa-bodyparser')
app.use(bodyparser())
const UserModel = require('../sequelize/user')
router.post('/update', async(ctx, next) => {
let req = ctx.request.body;
if (req) {
try {
let update = await UserModel.updateUser(req.id, req);
let data = await UserModel.findOneUser(req);
ctx.response.status = 200;
ctx.body = {
code: 200,
msg: '更改成功',
data
}
} catch (err) {
ctx.response.status = 412;
ctx.body = {
code: 200,
msg: '更改失败',
data: err
}
}
} else {
ctx.response.status = 416;
ctx.body = {
code: 200,
msg: '未更改',
}
}
})
module.exports = router.routes()
**router文件下面的find_all.js文件**
const Koa = require('koa')
const Router = require('koa-router')
const app = new Koa()
const router = new Router();
const bodyparser = require('koa-bodyparser')
app.use(bodyparser())
const UserModel = require('../sequelize/user')
router.get('/list', async(ctx, next) => {
try {
let data = await UserModel.findAllUser();
ctx.response.status = 200;
ctx.body = {
code: 200,
msg: '成功',
data
}
} catch (err) {
ctx.response.status = 412;
ctx.body = {
code: 200,
msg: '失败',
data: err
}
}
})
module.exports = router.routes()
如有错误,请告知。