本文已参与「新人创作礼」活动,一起开启掘金创作之路。
koa2+sequelize+mysql2搭建后台
本文章是根据以下链接进行二次开发,案例有所改变,将最主要的提取了出来,若需更详细的可看以下链接的文章
4.模型应用、使用
在项目中modules目录下创建users.js文件,为用户表,该文件为用户的实例。(伏笔在这里出现了,如果两非必填项没赋值,将会报错)
// 引入mysql的配置文件
const db = require('../config/db');
// 引入sequelize对象
const Sequelize = db.sequelize;
// 引入数据表模型
const Users = Sequelize.import('../schema/users');
Users.sync({
force: false
}); //自动创建表
class UsersModel {
/**
* 创建用户模型
* @param data
* @returns {Promise<*>}
*/
static async createUsers(data) {
return await Users.create({
loginName: data.loginName, //登录名
pwd: data.pwd, //密码
email: data.email, //email
avatarUrl: '',//这两个非必填项一定要写不然
headline: ''//就会报错。
});
}
/**
* 查询用户的详情
* @param id 用户ID
* @returns {Promise<Model>}
*/
static async getUsersDetail(id) {
return await Users.findOne({
where: {
id
}
});
}
}
module.exports = UsersModel;
5.controller 控制器 控制器的主要作用为功能的处理,项目中controller目录下创建users.js,代码如下:
const UsersModel = require("../modules/users");
class usersController {
/**
* 创建用户
* @param ctx
* @returns {Promise.<void>}
*/
static async create(ctx) {
//接收客服端
let req = ctx.request.body;
if (req.loginName && req.pwd && req.email) {
try {
//创建用户模型
const ret = await UsersModel.createUsers(req);
//使用刚刚创建的用户ID查询文章详情,且返回用户详情信息
const data = await UsersModel.getUsersDetail(ret.id);
ctx.response.status = 200;
ctx.body = {
code: 200,
msg: '创建用户成功',
data
}
} catch (err) {
ctx.response.status = 412;
ctx.body = {
code: 412,
msg: '创建用户失败',
data: err
}
}
} else {
ctx.response.status = 416;
ctx.body = {
code: 200,
msg: '参数不齐全'
}
}
}
/**
* 获取用户详情
* @param ctx
* @returns {Promise.<void>}
*/
static async detail(ctx) {
let id = ctx.params.id;
if (id) {
try {
// 查询用户详情模型
let data = await UsersModel.getUsersDetail(id);
ctx.response.status = 200;
ctx.body = {
code: 200,
msg: '查询成功',
data
}
} catch (err) {
ctx.response.status = 412;
ctx.body = {
code: 412,
msg: '查询失败',
data
}
}
} else {
ctx.response.status = 416;
ctx.body = {
code: 416,
msg: '用户ID必须传'
}
}
}
}
module.exports = usersController;
6.路由
路由,也可以简单理解为路径,主要是作为请求的url,请求的路径来处理一些请求,返回数据。(其实就是后台接口)
一般情况下,基于node的项目,路由都是在一个叫做routes的目录下面。
const Router = require('koa-router');
const UsersController = require('../controllers/users');
const router = new Router({
prefix: '/api/v1'
});
/**
* 用户接口
*/
//创建用户
router.post('/users/create', UsersController.create);
//获取用户详情
router.get('/users/:id', UsersController.detail);
module.exports = router
7.解决跨域
npm install koa-cors --save
然后在根目录下的app.js加入koa-cors的引用:
const cors = require('koa-cors')
app.use(cors()) //使用cors
重启服务就能测试接口了。
troller.create);
//获取用户详情 router.get('/users/:id', UsersController.detail);
module.exports = router
**7.解决跨域**
```javascript
npm install koa-cors --save
然后在根目录下的app.js加入koa-cors的引用:
const cors = require('koa-cors')
app.use(cors()) //使用cors
重启服务就能测试接口了。