egg.jsegg-sequelize插件mysql实现数据的增删改查操作并输
出成Rest。。。
1、基础环境
1.1、操作系统
window10
1.2、数据库
mysql
1.3、开发⼯具
WebStorm
1.4、egg.js开发环境的依赖项(直接贴我的package.json⽂件部分了),如下:
"egg": {
"declarations": true
},
"dependencies": {
"egg": "^2.15.1",
"egg-scripts": "^2.11.0",
"egg-sequelize": "^5.2.0",
"egg-validate": "^2.0.2",
"moment": "^2.24.0",
"mysql2": "^1.7.0",
"uuid": "^3.3.3"
},
"devDependencies": {
"autod": "^3.0.1",
"autod-egg": "^1.1.0",
"egg-bin": "^4.11.0",
"egg-ci": "^1.11.0",
javascript说明"egg-mock": "^3.21.0",
"eslint": "^5.13.0",
"eslint-config-egg": "^7.1.0",
"factory-girl": "^5.0.4",
"sequelize-cli": "^5.5.1"
},
"engines": {
"node": ">=10.0.0"
},
1.5、测试⼯具
这部分测试可以使⽤POSTMAN进⾏,也可以使⽤断⾔库进⾏,推荐使⽤断⾔进⾏测试
2、建表语句
这部分只拿⼀张表作为⽰例:⾓⾊表,下⾯是建表语句
CREATE TABLE tf_sys_roler(
id CHAR(36) PRIMARY KEY COMMENT '⾓⾊编号' DEFAULT 1,
role_name CHAR(24) COMMENT '⾓⾊名称',
role_code CHAR(24) COMMENT '⾓⾊code',
created_by CHAR(16) COMMENT '创建⼈',
created_time TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建⽇期',
updated_by CHAR(16) COMMENT '修改⼈',
updated_time TIMESTAMP NULL COMMENT '修改⽇期',
del_flag CHAR(2) COMMENT '是否删除:1表⽰已删除,0表⽰未删除'
)ENGINE= MYISAM CHARACTER SET utf8;
3、Restful API风格的接⼝说明
接⼝⽆外乎就是增删改查,再此基础上还可以衍⽣出对应的批量操作等,下⾯是controller层定义的⽅法名称和CRUD的对应(这⽅法名称最好严格按照restful的来,否则会很纠结⼀直404)
查询:
GET请求 ,对应的⽅法名称是:index()
新增:
POST请求,对应的⽅法名称是:create()
更新:
PUT请求,对应的⽅法名称是:update()
删除:
DELETE请求,对应的⽅法名称是:destroy()
controller的⽅法命名如下图:
4、⼯程的⽬录结构,如下图:
因为我是⽤的egg脚⼿架⽣成的⼯程⽬录,所以我这部分没有什么特殊的脚⼿架命令:
npm init egg --type=simple
下⾯对部分⽬录进⾏⼀些必要的说明
4.1、⽬录结构说明:
这部分,每个⽬录可以参照来看,如下图所⽰
⽬录结构上⾯,建议按照官⽅的这样来写,特别是起步阶段,⽅便快速开始
⼏点说明:
1、如果想要按照对应的模块分⽬录,也是可⾏的,⽐如我这边,⾓⾊属于系统管理部分,我想把他放在sys⽬录下,就可以如下图这样布局:
获取的时候,带上sys就⾏,如下:
但是,如果是model模块下,如果获取记得把⾸字母⼤写,⽬录和模块都需要⾸字母⼤写,否则,会出现undefined的错误的
const role = del.ate({ role_name, role_code });
4.2、db.js模块的说明
这个db.js模块是app下的⼀个模块,本不是官⽅建议的这样的⼀个模块,但是出于以下⼏点的考虑:
1、因为数据库中,每⼀个表都有主键ID、创建⼈、创建时间等公共字段,这样我把这些公共的部分抽到⼀个单独的模块中,然后其他的model模块在使⽤的时候在调⽤这个公共模块可以避免很多的重复字段定义
2、主键ID,系统要求是做到以UUID的形式存在,抽到⼀个公共的模块中,也可以避免重复定义操作和误操作带来的不必要的⿇烦,其他的公共字段也有出于这部分考虑的需要
3、del.define这个模块定义,需要将默认的createAt和updateAt字段去除,⽽使⽤⾃定义的created_by和updated_by
详细的db.js的代码如下:
'use strict';
const uuidv1 = require('uuid/v1');
const moment = require('moment');
function generateUUID() {
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论