egg-sequelize --- nodejs

项目
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的更多相关文章
- 搭建项目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 ...
- 【前端】nodejs的ORM框架sequelize的工厂化
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/sequelize_factory.html 一.什么是sequelize nodejs的后台在操作数据库的时候,需 ...
- Serverless + Egg.js 后台管理系统实战
本文将介绍如何基于 Egg.js 和 Serverless 实现一个后台管理系统 作为一名前端开发者,在选择 Nodejs 后端服务框架时,第一时间会想到 Egg.js,不得不说 Egg.js 是一个 ...
- Vue/Egg大型项目开发(一)搭建项目
项目Github地址:前端(https://github.com/14glwu/stuer)后端(https://github.com/14glwu/stuer-server) 项目线上预览:http ...
- egg.js 相关
egg sequelize 建表规范 CREATE TABLE `wx_member` ( `id` ) NOT NULL AUTO_INCREMENT COMMENT 'primary key' ...
- egg源码浅析一npm init egg --type=simple
要egg文档最开始的时候,有这样的几条命令: 我们推荐直接使用脚手架,只需几条简单指令,即可快速生成项目: $ mkdir egg-example && cd egg-example ...
- nodejs项目mysql使用sequelize支持存储emoji
nodejs项目mysql使用sequelize支持存储emoji 本篇主要记录nodejs项目阿里云mysql如何支持存储emoji表情. 因由 最近项目遇到用户在文本输入emoji进行存储的时候导 ...
- koa2+log4js+sequelize搭建的nodejs服务
主要参考http://www.jianshu.com/p/6b816c609669这篇文章 npm安装使用国内taobao镜像,速度更快些 npm --registry https://registr ...
- 从 moment -> nodejs -> sequelize -> postgres,你都得设置好时区
背景 最近在做报表统计,因为 sequelize 的时区配置没加导致了统计数字对不上的问题. 问:大家都知道时区,但是你清楚 UTC 和 GMT 的区别吗? 答:UTC 是我们现在用的时间标准,GMT ...
随机推荐
- ps查看图层大小快捷键
1.图层大小尺寸的: ctrl+alt+c 2.图片大小尺寸.像素大小: ctrl+alt+i
- python爬虫遇到会话存储sessionStorage
记录一次爬虫生成链接过程中遇到的sessionStorage存储数据 1.简介 sessionStorage 是HTML5新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标 ...
- 虚拟机ubuntu 网速慢的解决方法
其实虚拟机网速慢,我觉得就两个限制因素.一个是虚拟机的内存,内存小了,上传和下载的速率就慢了,就像内存小的虚拟机跑得慢是一个道理:还有一个就是网络连接方式,这里我使用的是桥接,之前我使用的NAT模式, ...
- 夯实Java基础系列14:深入理解Java枚举类
目录 初探枚举类 枚举类-语法 枚举类的具体使用 使用枚举类的注意事项 枚举类的实现原理 枚举类实战 实战一无参 实战二有一参 实战三有两参 枚举类总结 枚举 API 总结 参考文章 微信公众号 Ja ...
- ArcSDE编辑数据ArcMap系统崩溃
问题描述:用ArcMap编辑Oracle中ArcSDE空间数据,一修改,ArcMap系统就停止响应,然后崩溃 开发的Engine系统操作数据库,然后在客户端蓝屏后,数据库空间数据就出现了不可编辑状态. ...
- Android开发——RecyclerView实现下载列表
本篇记录的是使用Jsoup框架爬取网页内容,结合Android的RecyclerView,从而实现批量下载小说的功能(也是我的APP星之小说下载器Android版的核心功能),思路仅供参考 本文使用了 ...
- 从单片机到操作系统⑦——深入了解FreeRTOS的延时机制
>没研究过操作系统的源码都不算学过操作系统 # FreeRTOS 时间管理 时间管理包括两个方面:系统节拍以及任务延时管理. ## 系统节拍: 在前面的文章也讲得很多,想要系统正常运行,那么时钟 ...
- 记录一次jvm内存泄露的问题
前些天,运维告诉我刚上线的java服务占用CPU过高. 以下是发现解决问题的具体流程. 1:通过#top命令查看,我的java服务确实把CPU几乎占满了,如图 可看到18400这个进程CPU占用达到了 ...
- nginx的负载均衡实战
前言 nginx是一个高性能的HTTP和反向代理的服务器.它有三个最基本的功能,一是当做web服务器.二是作为反向代理服务器.三是提供负载均衡(在反向代理基础上),由于它占有内存小,并发能力强,所以在 ...
- 最简单的ArcGIS Engine应用程序(中)
上一篇中只能添加代码中指定的shp文件(最简单的ArcGIS Engine应用程序(上)) 为了让用户可以浏览磁盘加载指定的shp文件,需做一下调整. 从工具箱往窗体上添加一个OpenFileDial ...