大家可以前往 Sequelize中文文档,查看 Sequelize不同版本【5.x、4.x】的文档
本文档分多个篇章,难易程度从低到高,学习此篇章之前,务必确保自己已经掌握 node.js、express、es6语法、mysql等关系型数据库的sql语法等
在写这篇文章之前,我查阅了好多资料,重点推荐初学者可以查看 布拉德皮蛋_qzy 写的 Sequelize 和 MySQL 对照,但是此篇文章所介绍的很多方法在
Sequelize V5.9.4
中已舍弃或更换方法,使用Sequelize V5.9.4
版本并且想学习MVC
设计模式的可以查看我写的文章
在开始学习之前,先让我们了解一下为什么选择这款框架吧
- 大家可以前往 https://github.com/search?q=Sequelize 查看start数
Sequelizejs
是一个ORM(Object Relationship Model)框架,我们可以用面向对象的思维来操作MySQL
- 此框架我们选择了最新的版本
Sequelize V5.9.4
,由于跟4.x
版本差别较大,这里不做对比,只介绍V5.x
的版本,下面让我们正式开始吧
安装
安装Sequelize
$ npm install --save sequelize
安装对应的数据库驱动程序
$ npm install --save mysql2
目录结构
下面会对应各个文件的功能
链接数据库(connection/index.js
)
注意:在链接数据库时,因为我的数据库版本是
MySQL8.0
,当时链接出错了,修改一下配置就好了,解决此问题的文档自行百度,我找不到了
这里我直接暴露出去Sequelize实例化并成功链接后的对象
import Sequelize from 'sequelize'
const sequelize = new Sequelize('mysql://用户名:数据库密码@数据库地址:端口号/数据库名');
sequelize.authenticate().then(() => {
console.log('mysql connection success.');
}).catch(err => {
console.error('mysql connection error:', err);
});
export default sequelize
定义user
表模型–Model(Model/User.Model.js
)
import Sequelize from 'sequelize'
import sequelize from './../connection'
let User = sequelize.define('user', { //这里的user会默认转成复数users
username: {
type: Sequelize.CHAR(10), //字段类型
allowNull: false,//不为空
unique: true //字段是否UNIQUE
},
gender: Sequelize.INTEGER //如果只有类型,可以直接这么设置
},{
freezeTableName: true, // 自定义表名
tableName: '自定义表名',
timestamps: true,// 是否需要增加createdAt、updatedAt字段
createdAt: false, // 不需要createdAt字段
updatedAt: 'endtime',//修改updatedAt字段名称为endtime
freezeTableName: true,// 禁用修改表名; 默认情况下,sequelize将自动将所有传递的模型名称(define的第一个参数)转换为复数. 如果你不想这样,请设置为true
}
);
User.sync({force: true}).then(d=> { //建议在表模型设计完成后,打开此段代码,待数据库中表建立完成后,注释掉此段,防止每次都删除并重新建表
console.log('强制清空users表并根据模型新建');
});
export default User
操作user模型–Controller(Controller/User.Controller.js
)
import User from './../Model/User.Model'
export default {
getUserInfo: (req, res, next)=>{//这里举个例子,直接获取username为Mjhu的用户
User.findOne({where: {username: 'Mjhu', gender: 1}}).then(user => {
res.send({code: 200, data: user})
}).catch(err=>{
res.send({code: 500,data: err})
});
}
}
View模型
const express = require('express');
const router = express.Router();
import User from '../Mysql/Controller/User.Controller'
router.get('/mysql', User.getUserInfo); //直接调用Controller里的方法
module.exports = router;
到此为止,一个简单的 Sequelize MVC 就弄好了,下一篇章将会详细介绍 Sequelize V5.9.4 单表的 CRUD