引言
Sequelize 是一个出色的 ORM 框架,可以用于 node.js 应用程序中的模型定义、查询和事务管理等操作。使用它可以方便地操作多种关系型数据库(如 MySQL、Postgres、SQLite 等),大大简化了与数据库打交道的难度。
本文将整理总结 Sequelize 的使用指南,并对常用的 API 进行详细解释说明。通过学习本文,希望能够使读者对 Sequelize 有更深刻的认识,并在实际项目中运用自如。
安装和配置
首先我们需要安装 Sequelize,使用 npm 命令即可:
npm install sequelize
Sequelize 同时支持 promise 和 callback 风格,如果你的 node 版本不低于8.0,那么就可以使用 async/await 语法了。这里建议使用 ES2015 的 import/export 语法引入 Sequelize:
import Sequelize from 'sequelize';
接下来,我们需要创建一个 Sequelize 实例。这个实例代表你要连接的数据库,在创建时需要传递一些参数,如下:
const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql', // or 'postgres' / 'sqlite' port: 3306, // optional, default: dialect default logging: false // 关闭日志输出,默认为 console.log });
其中,第一个参数是数据库名字;第二个和第三个分别是用户名和密码。host 和 port 表示数据库的主机地址和端口号,如果你使用的是默认值(localhost 和 3306),则可以省略不写,dialect 则指定了使用的数据库类型。
模型定义
Sequelize 的核心概念就是模型(Model),它对应了数据库中某个表格(table)的结构和行为(即列和字段)。
我们首先需要定义一个 Model,可以通过调用 define()
方法实现,如下:
// javascriptcn.com 代码示例 const User = sequelize.define('user', { // 在此处定义模型属性 id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true }, name: { type: Sequelize.STRING(50), allowNull: false }, age: { type: Sequelize.INTEGER, allowNull: false, defaultValue: 0 }, gender: { type: Sequelize.ENUM('male', 'female'), allowNull: false, defaultValue: 'male' } }, { // 选项 });
以上代码定义了一个名为 user 的模型,包含了四个属性:id、name、age、gender。各个属性的定义方式和数据类型见代码注释。第二个参数是可选的,可以设置一些选项,如 tableName
可以修改表名,timestamps
控制是否添加 createdAt 和 updatedAt 两个字段等。
除了上述常用的数据类型(STRING
、INTEGER
,ENUM
)外,Sequelize 还支持很多其他的数据类型(如 BOOLEAN、DATE、FLOAT 等),可以根据需要自行查阅官方文档。
同步数据库
在定义完模型之后,我们需要让 Sequelize 帮助我们生成相应的表。在生产环境中,一般采用迁移工具 (如 sequelize-cli
) 来完成此过程。而在开发调试时,可以调用 sync()
方法来实现,即:
sequelize.sync();
此方法会根据定义的模型,自动生成对应的表结构及其索引等。如果表已经存在,则不会再次创建。如果表结构有变化,则会自动升级(或者降级)表结构。
当然,为了防止不必要的麻烦,在正式环境下并不建议采用 sync()
方法
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/651bbb7c95b1f8cacd35b8c0