持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
大家可以前往 Sequelize中文文档,查看 Sequelize不同版本【5.x、4.x】的文档
本文档分多个篇章,难易程度从低到高,学习此篇章之前,务必确保自己已经掌握 node.js、express、es6语法、mysql等关系型数据库的sql语法等
在开始学习之前,先让我们了解一下为什么选择这款框架吧
- 大家可以前往 github.com/search?q=Se… 查看start数
Sequelizejs
是一个ORM(Object Relationship Model)框架,我们可以用面向对象的思维来操作MySQL
- 此框架我们选择了最新的版本
Sequelize V6.20.1
,由于每个版本都会进行升级,这里只介绍V6.x
的版本,下面让我们正式开始吧
安装
安装Sequelize
$ npm install --save sequelize
安装对应的数据库驱动程序
$ npm install --save mysql2
目录结构
下面会对应各个文件的功能
链接数据库(connection/index.js
)
注意:在链接数据库时,因为我的数据库版本是
MySQL8.0
,当时链接出错了,修改一下配置就好了,解决此问题的文档自行百度
这里我直接暴露出去Sequelize实例化并成功链接后的对象
import { Sequelize } from 'sequelize'
const sequelize = new Sequelize({
dialect: 'mysql', // 指定连接的数据库类型
database: 'shuati', // 指定连接的数据库
username: 'root', // 数据库用户名
password: '123456', // 数据库密码
host: 'localhost', // 指定数据库服务器的ip
port: 3306 // 指定数据库服务器的端口号
});
sequelize.authenticate().then(() => {
console.log('mysql connection success.');
}).catch(err => {
console.error('mysql connection error:', err);
});
定义user
表模型--Model(Model/User.Model.js
)
import {Sequelize, DataTypes} from "sequelize";
import sequelize from "../connection";
let User = sequelize.define('user', { //这里的user会默认转成复数users
username: {
type: DataTypes.CHAR(10), //字段类型
allowNull: false,//不为空
unique: true //字段是否UNIQUE
},
gender: DataTypes.INTEGER //如果只有类型,可以直接这么设置
},{
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 就弄好了