项目

egg + sequelize + mysql2


项目结构

配置


安装模块

npm install --save egg-sequelize

npm install --save egg-cors

npm install --save mysql2

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: 'nodejs',
host: 'localhost',
port: '3306',
username: 'root',
password: 'root',
timezone: '+08:00',
};
//mysql配置结束
//cors配置开始
config.security = {
csrf: {
enable: false,
},
domainWhiteList: [ 'http://localhost:8080' ],
};
config.cors = {
credentials: true,
};
//cors配置结束

数据建模


mysql 建表

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='收藏表';

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;
}

(选配)启动时创建数据库表

// {work_dir}/app.js
module.exports = app => {
app.beforeStart(async function () {
await app.model.sync({ force: true });
});
};

service


service/collect.js

'use strict';

const Service = require('egg').Service;

class CollectService extends Service {

    // 查询所有数据
async findAll() {
let ret = await this.ctx.model.Collect.findAll() console.log(ret)
return ret
} // 增加数据
async create(data) {
await this.ctx.model.Collect.create(data)
.then(res => {
console.log('res: '+ JSON.stringify(res))
}).catch(err => {
console.log('err: '+ JSON.stringify(err))
}) // try{
// let a= await this.ctx.model.Collect.create(data)
// console.log(a)
// }catch(err){
// console.log(err)
// }
} // 修改数据
async update() {
const ret = await this.ctx.model.Collect.update({
author: '新作者'
}, {
where: {
id: 2
}
}).then(ok => {
console.log('ok')
console.log(ok)
}).catch(e => {
console.log('message:' + e)
})
} // 删除数据
async delete(callback){
await this.ctx.model.Collect.destroy({
where: {
id: 20
}
}).then(res => {
console.log('res:' + JSON.stringify(res))
return callback(JSON.stringify(res))
}) } // 自定义查询
async query(callback){
let sql = 'SELECT COUNT(1) FROM collect'
let ret = await this.ctx.model.query(sql, {type: 'SELECT'})
return ret
}
} module.exports = CollectService;

controller


controller/collect.js

'use strict';

const Controller = require('egg').Controller;

class CollectController extends Controller {
async findAll(){
const {ctx} = this;
ctx.body = await ctx.service.collect.findAll()
} async create(){
const ctx = this.ctx
const body = ctx.request.body const ret = await ctx.service.collect.create(body) ctx.body = '<h1>添加数据</h1>'
} async update() {
await this.ctx.service.collect.update()
this.ctx.body = '<h1>修改数据</h1>'
} async delete() {
await this.ctx.service.collect.delete(function(res, err) {
console.log('ret: ' + res)
})
console.log('哈哈哈哈')
this.ctx.body = '<h1>删除数据</h1>'
}
} module.exports = CollectController;

router.js


  router.get('/collect',controller.collect.findAll)
router.post('/create', controller.collect.create)
router.get('/update', controller.collect.update)
router.get('/delete', controller.collect.delete)

接下来,用postman 或者 其他测试软件自己跑一下...

egg-sequelize --- nodejs的更多相关文章

  1. 搭建项目vue + vue-router + vuex + vue-i18n + element-ui + egg + sequelize

    vue + vue-router + vuex + vue-i18n + element-ui + egg + sequelize https://www.cnblogs.com/wuguanglin ...

  2. 【前端】nodejs的ORM框架sequelize的工厂化

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/sequelize_factory.html 一.什么是sequelize nodejs的后台在操作数据库的时候,需 ...

  3. Serverless + Egg.js 后台管理系统实战

    本文将介绍如何基于 Egg.js 和 Serverless 实现一个后台管理系统 作为一名前端开发者,在选择 Nodejs 后端服务框架时,第一时间会想到 Egg.js,不得不说 Egg.js 是一个 ...

  4. Vue/Egg大型项目开发(一)搭建项目

    项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server) 项目线上预览:http ...

  5. egg.js 相关

      egg sequelize 建表规范 CREATE TABLE `wx_member` ( `id` ) NOT NULL AUTO_INCREMENT COMMENT 'primary key' ...

  6. egg源码浅析一npm init egg --type=simple

    要egg文档最开始的时候,有这样的几条命令: 我们推荐直接使用脚手架,只需几条简单指令,即可快速生成项目: $ mkdir egg-example && cd egg-example ...

  7. nodejs项目mysql使用sequelize支持存储emoji

    nodejs项目mysql使用sequelize支持存储emoji 本篇主要记录nodejs项目阿里云mysql如何支持存储emoji表情. 因由 最近项目遇到用户在文本输入emoji进行存储的时候导 ...

  8. koa2+log4js+sequelize搭建的nodejs服务

    主要参考http://www.jianshu.com/p/6b816c609669这篇文章 npm安装使用国内taobao镜像,速度更快些 npm --registry https://registr ...

  9. 从 moment -> nodejs -> sequelize -> postgres,你都得设置好时区

    背景 最近在做报表统计,因为 sequelize 的时区配置没加导致了统计数字对不上的问题. 问:大家都知道时区,但是你清楚 UTC 和 GMT 的区别吗? 答:UTC 是我们现在用的时间标准,GMT ...

随机推荐

  1. Angular Cli 升级到最新版本

    1. 卸载当前版本 npm uninstall -g angular-cli 2. 清除未卸载干净的angular-cli缓存 npm cache clean -f 3. 到安装目录查看是否卸载干净 ...

  2. pikachu-数字型注入(post)#手工注入

    1, 因为是post型,所以需要抓取数据包 2, 测试结果为数字型注入 提交恒等的语句可以查询到所有的数据信息 3, 使用UNION联合查询法 判断字段数,测试为2个字段时没有报错,所以可以判断字段数 ...

  3. WCF尝试创建与发布IIS(含问题描述)

    技术贴技术贴就直接讲技术来,客套的话我也不多说了,各位看官包涵包涵. 跟着园内高手一步一步发布成功,欣喜若狂之际,发个贴纪念纪念一下. 废话不多说,不正确之处,还望大家积极指出,共同进步.哈哈~~~ ...

  4. intellj Idea git ignore文件的.idea不起作用解决

    问题描述: idea中使用git每次提交的时候都会选中项目目录下.idea目录,虽然设置了.ignore文件但是不起作用. 综合网上搜索结果,并完美解决,方法如下: 1.原因就是git已经关联追踪了这 ...

  5. sublime text2解决中文乱码,支持中文的设置方法

    步骤: 1.安装Sublime Package Control.        在Sublime Text 2上用Ctrl+-打开控制台并在里面输入以下代码,Sublime Text 2就会自动安装P ...

  6. 窥见云技术未来大势,腾讯云Techo开发者大会即将在京召开

    云.物联网.5G.人工智能……一项项技术的突破带来了天翻地覆的变化,开发者们是如何一次次地进行天马行空的创意和极限突破?2019年11月6日-7日,由腾讯云主办的首届Techo开发者大会将在北京嘉里大 ...

  7. main(argc, char *argv[])

    #include<stdio.h> int main(int argc, char *argv[]) { int i; ;i<argc;i++) { printf("arg ...

  8. 【前端词典】几个有益的 CSS 小知识

    今天偷个懒,不长篇大论,分享几个你可能不知道的 CSS 小知识. 样式的顺序 CSS 代码:   HTML 代码:   记得之前这是一道比较火的 CSS 考题,当时好像是有不少的人答错(30% 以上) ...

  9. Oracle11g入门

    数据类型 数据类型 表示 数字 number 日期时间 date 字符串 char(长度)/varchar2(长度) 约束条件 名称 约束 唯一 unique 非空约束 not null 主键约束 p ...

  10. npm install bcrypt报错

    gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env va ...