Sequelize使用教程(v5版本)

本文是 Sequelize v5 版本的使用教程,详细介绍了如何安装、建立mysql连接、编写表的model文件、同步数据库、执行CRUD操作以及事务处理。通过示例展示了Sequelize如何简化Node.js中的数据库操作。
摘要由CSDN通过智能技术生成

用nodejs写服务端的小伙伴们对sequelize一定不会陌生的,它是node端著名的ORM框架,支持MySQL, MariaDB, SQLite和Microsoft SQL Server等数据库。通过这个库我们可以实现如下功能:

  • 生成表:使用js定义好表结构,直接将表同步生成到数据库中,省去了手动写sql建表的烦恼。

  • CRUD:通过sequlize提供的方法去实现数据库的查询等操作,清晰明了,不需要写大段大段的原生sql语句。

  • 迁移:如果需要在下一版本中,增加或者删除某个库中的字段,亦或是增加表或删除表,直接修改之前定义表结构的js文件,然后执行一个迁移脚本,就会自动生成一个数据库的升级和降级的脚本,直接运行即可。(本文不讲解如何实现迁移,需要的小伙伴请查看官方文档https://sequelize.org/v5/manual/migrations.html

之前项目中用的是v4版本的sequelize(一直偷懒没有升级),在2019.03.13的时候sequelize正式发布的v5版本。最近正好有个新项目于是就用了v5版本的,熟悉了下新的方法,本文主要讲解sequelize结合mysql的在实际项目中的用法!

seuqelize v5官方文档地址:https://sequelize.org/v5/

一、安装

通过npm安装sequelize和mysql(v5版本的sequelize需要node版本为6或者更高

npm install --save sequelize
npm install --save mysql2

二、建立mysql连接

接下来我们会用Sequelize的构造方法来创建一个mysql的连接实例。

先来看看sequelize官方文档中构造方法的定义

public constructor(database: string, username: string, password: string, options: Object)

再来看看我们实际代码中对构造方法的调用: 

const Sequelize = require('sequelize');

const TcDb = new Sequelize(database, username, password, {
    host: DB_CONFIG.HOST,
    port: DB_CONFIG.PORT,
    dialect: 'mysql',
    timezone: '+08:00',
    logging: false,
    pool: {
        max: 5,
        min: 0,
        idle: 10000
    },
    define: {
        freezeTableName: true,//禁止自动修改表名
        timestamps: false,//不需要添加 createdAt 和 updatedAt 两个时间戳字段
    }
});

解释几个必要参数,以及日常使用频率较高的参数

  • database:数据库的名称
  • username:用来认证数据库连接的用户名
  • password:用来认证数据库连接的密码
  • host:数据库的host地址
  • port:数据库服务的端口
  • dialect:数据库语言,可以选mysql、postgres、sqlite等
  • timezone:时区,将数据库时间转换成js的date时候会用到,默认是:‘+00:00’,我们一般设置成中国的时区,避免一些时间转换的麻烦
  • logging:执行每次数据库操作,是否在在控制台输出原生sql的log
  • pool:数据库连接池的设置,用的是默认配置
  • freezeTableName:默认为false,是否需要固定表名,如果设置为true,js中定义表名会和数据库中创建的表名相同,如果为false,Sequelize会按照他的规则生成一个表名
  • timestamps:默认为true,默认情况下,Sequelize会为每个表创建2个字段,createdAt和updatedAt,设置为false则不会自动创建这2个字段

初始化完mysql的连接后,可以通过下面的代码来验证下是否连接成功:

TcDb.authenticate()
    .then(() => {
        console.log('Connection has been established successfully.');
    })
    .catch(err => {
        console.error('Unable to connect to the database:', err);
    });

关于更多连接配置参数的介绍请查阅官方文档:https://sequelize.org/v5/class/lib/sequelize.js~Sequelize.html#instance-constructor-constructor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值