博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
egg学习笔记(6)--egg+mysql(sequelize)+vue实现curd
阅读量:6452 次
发布时间:2019-06-23

本文共 7330 字,大约阅读时间需要 24 分钟。

后台

项目

egg+mysql(sequelize)+vue实现curd

项目结构

clipboard.png

mysql建表(collect)

CREATE TABLE `collect` (  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '收藏id',  `author` varchar(255) DEFAULT NULL COMMENT '作者',  `date` varchar(255) DEFAULT NULL COMMENT '日期',  `link` varchar(255) DEFAULT NULL COMMENT '链接',  `title` varchar(255) DEFAULT NULL COMMENT '标题',  `created_at` datetime DEFAULT NULL COMMENT '创建时间',  `updated_at` datetime DEFAULT NULL COMMENT '更改时间',  PRIMARY KEY (`id`),  UNIQUE KEY `title` (`title`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收藏表';

配置

egg安装模块

cnpm install egg-sequelize egg-cors --save

config/pulgin.js

exports.sequelize = {  enable: true,  package: 'egg-sequelize',};exports.cors = {  enable: true,  package: 'egg-cors',};

config/config.default.js

//mysql配置开始  config.sequelize = {    dialect: 'mysql', // support: mysql, mariadb, postgres, mssql    dialectOptions: {      charset: 'utf8mb4',    },    database: 'egg04',    host: 'localhost',    port: '3306',    username: 'root',    password: '123456',    timezone: '+08:00',  };  //mysql配置结束  //cors配置开始  config.security = {    csrf: {      enable: false,    },    domainWhiteList: [ 'http://localhost:8080' ],  };  config.cors = {    credentials: true,  };    //cors配置结束

数据建模

model/collect.js

'use strict';module.exports = app => {    const {        INTEGER,        STRING,        DATE    } = app.Sequelize;    const Collect = app.model.define('collect',{        id:{            type:INTEGER,            primaryKey:true,            autoIncrement:true        },        author:STRING,        date:STRING,        link:STRING,        title:STRING,        created_at:DATE,        updated_at:DATE    },{        freezeTableName: true, //使用默认表名,不会变以collects    })    return Collect;}

controller

controller/collect.js

'use strict';const Controller = require('egg').Controller;class CollectController extends Controller {    async create(){        const {ctx} = this;        const body = ctx.request.body;        ctx.body = await ctx.service.collect.create(body);    }        async destroy(){        const {ctx} = this;        const id = +ctx.params.id;        ctx.body = await ctx.service.collect.destroy(id)    }    async update(){        const {ctx} = this;        const id = +ctx.params.id;        const body = ctx.request.body;        ctx.body = await ctx.service.collect.update({            id,            body        })    }    async find() {        const {ctx} = this;        const id = +ctx.params.id;        ctx.body = await ctx.service.collect.find(id)      }    async list(){        const {ctx} = this;        const query = ctx.query;        ctx.body = await ctx.service.collect.list(query)    }}module.exports = CollectController;

service

service/collect.js

'use strict';const Service = require('egg').Service;const{ERROR,SUCCESS} = require('../util/util')class CollectService extends Service {    async create(collect){        const {ctx} = this;        try{            collect = await ctx.model.Collect.create(collect);            if(!collect){                ctx.status = 400;                return Object.assign(ERROR,{                    msg:`expectd collect,but got ${JSON.stringify(collect)}`                })            }            ctx.status = 200;            return Object.assign(SUCCESS,{                data:collect            })        }catch(error){            ctx.status = 500;            throw(error)        }    }    async destroy(id){        const {ctx} = this;        try{            const collect = await ctx.model.Collect.findById(id);            if(!collect){                ctx.status = 400;                return Object.assign(ERROR,{                    msg:'not found collect'                })            }            const res = await collect.destroy();            ctx.status = 200;            return Object.assign(SUCCESS,{                data:res            })        }catch(error){            ctx.status = 500;            throw(error)        }    }    async update({        id,        body    }){        const {ctx} = this;        try{            const collect = await ctx.model.Collect.findById(id);            if(!collect){                ctx.status = 400;                return Object.assign(ERROR,{                    msg:'not fount collect'                })            }            const res = await collect.update(body);            ctx.status = 200;            return Object.assign(SUCCESS,{                data:res            })        }catch(error){            ctx.status = 500;            throw(error)        }    }    async find(id) {        const {ctx} = this;        try{            const collect = await ctx.model.Collect.findById(id);            if(!collect){                ctx.status = 400;                return Object.assign(ERROR,{                    msg:'not found collection'                })            }            ctx.status = 200;            return Object.assign(SUCCESS,{                data:collect            })        }catch(error){            ctx.status = 500;            throw(error)        }      }    async list({        offset = 0,        limit = 10,        order_by ='created_at',        order = 'DESC'    }){        const {ctx} = this;        const options = {            offset:parseInt(offset),            limit:parseInt(limit),            order:[                [order_by,order.toUpperCase()]            ]        }        try{            const res = await ctx.model.Collect.findAndCountAll(options);            if(!res){                ctx.status = 400;                return Object.assign(ERROR,{                    msg:'not fount collect'                })            }            ctx.status = 200;            return Object.assign(SUCCESS,{                data:res            })        }catch(error){            ctx.status = 500;            throw(error)        }    }}module.exports = CollectService;

router.js

router.post('/api/collect',controller.collect.create)  router.delete('/api/collect/:id',controller.collect.destroy)  router.put('/api/collect/:id',controller.collect.update)  router.get('/api/collect',controller.collect.list)  router.get('/api/collect/:id',controller.collect.find)

前端

查找,删除

clipboard.png

增加

clipboard.png

修改

clipboard.png

转载地址:http://hlgwo.baihongyu.com/

你可能感兴趣的文章
华南x79主板u盘装系统教程_华南x79主板怎么装win7系统|华南x79主板装win7及BIOS设置...
查看>>
结构化查询语句简称mysql_整理MySql常用查询语句
查看>>
java spring 数据库连接_Spring连接数据库的几种常用的方式
查看>>
java list 分组数量_java8 集合 多字段 分组 统计个数代码
查看>>
java8 泛型 null 报错_Java8自定义带泛型的函数式接口
查看>>
java aqs面试题_Java 并发面试题:说下你对 AQS 的理解?
查看>>
java定义两个动物抽象类 程序_java抽象类和接口详解
查看>>
mysql中builder_Laravel - MySQL数据库的使用详解2(Query Builder用法1:查询操作)
查看>>
java 值传递_Java只有值传递
查看>>
java wcf_Java调用wcf
查看>>
java集合表_Java集合—List列表
查看>>
java存钱_用Java编写一个简单的存款
查看>>
grub ubuntu关闭gnu_VMWare启动Ubuntu GNU grub 怎么进入界面系统
查看>>
java创建界面四句代码_Java并发的四句箴言
查看>>
java中面向字符的数据流_Java知多少(68)面向字符的输出流
查看>>
java的浅克隆_java浅克隆与深克隆
查看>>
java递归深度限制_为什么我可以达到不确定的最大递归深度?
查看>>
java更新停止程序_不停止JVM动态更新Java类
查看>>
java怎么创建属性类_怎么建立java类属性
查看>>
怎么让access数据库连接到Java_如何将Java连接到MS Access数据库
查看>>