web全栈

Sequelize V5.9.4 MVC模式(一 | 简单的MV

2019-07-09  本文已影响0人  Mjhu

大家可以前往 Sequelize中文文档,查看 Sequelize不同版本【5.x、4.x】的文档

本文档分多个篇章,难易程度从低到高,学习此篇章之前,务必确保自己已经掌握 node.jsexpress、es6语法、mysql等关系型数据库的sql语法等

在写这篇文章之前,我查阅了好多资料,重点推荐初学者可以查看 布拉德皮蛋_qzy 写的 Sequelize 和 MySQL 对照,但是此篇文章所介绍的很多方法在Sequelize V5.9.4中已舍弃或更换方法,使用Sequelize V5.9.4版本并且想学习MVC设计模式的可以查看我写的文章

在开始学习之前,先让我们了解一下为什么选择这款框架吧

  1. 大家可以前往 https://github.com/search?q=Sequelize 查看start数
  2. Sequelizejs是一个ORM(Object Relationship Model)框架,我们可以用面向对象的思维来操作MySQL
  3. 此框架我们选择了最新的版本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 //如果只有类型,可以直接这么设置
},{
        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

上一篇下一篇

猜你喜欢

热点阅读