1.安装模块
yarn add koa-bodyparser yarn add @types/koa-bodyparser -D
2.入口文件引入
app/index.ts
// import Koa from 'koa'; // 错误的写法
// import Koa = require('koa');
import * as Koa from 'koa';
import { useControllers } from 'koa-controllers';
import * as KoaBodyParser from 'koa-bodyparser';
import db from './models';
let app = new Koa();
// 中间件
app.use(async (ctx: Koa.Context, next) => {
// 把db对象等其他一些数据挂在到当前的state下面
ctx.state.db = db;
await next();
});
app.use(KoaBodyParser());
useControllers(app, __dirname + '/controllers/**/*.controller.js', {
multipart: {
dest: './uploads'
}
})
app.listen(8000);
3.添加分类
app/controllers/admin/category.controller.ts
/**
* 分类 控制器
*/
import { Controller, Get, Ctx, Post } from 'koa-controllers';
import { Context } from 'koa';
import { Model } from 'sequelize';
@Controller
export class AdminCategoryController {
/**
* 获取分类信息列表
* localhost:8000/admin/category
*/
@Get('/admin/category')
public async index(@Ctx ctx: Context) {
/**
* 方式一
*/
// let categoryModel = <Model<any, any>>ctx.state.db['category'];
/**
* 方式二:类型断言
*/
let categoryModel: Model<any, any> = ctx.state.db['category'];
// 查询所有的分类信息
let categories = await categoryModel.findAll();
ctx.body = categories;
}
/**
* 新增分类
* localhost:8000/admin/category/add
*/
@Post('/admin/category/add')
public async add(@Ctx ctx: Context) {
// console.log(ctx.request.body);
let pid = (<any>ctx.request.body).pid || 0;
let name = (<any>ctx.request.body).name || '';
if (name == '') {
ctx.body = {
code: 1,
message: '分类名称不能为空'
}
return;
}
let categoryModel: Model<any, any> = ctx.state.db['category'];
let category = categoryModel.build({
name,
pid
});
await category.save();
ctx.body = {
code: 0,
data: category
}
}
}
.