简介
Sequelize 是一款 Node.js ORM(Object-Relational Mapping)框架,它支持 MySQL、PostgreSQL、SQLite 和 MSSQL 等多种数据库,并提供了强大的数据模型操作和查询语言,使得开发者可以方便地进行数据库操作,同时也提高了开发效率和代码质量。
安装和配置
在使用 Sequelize 之前,需要先安装和配置相关环境和依赖。具体步骤如下:
- 安装 Node.js 和 npm:在官网下载并安装 Node.js,npm 会随之自动安装。
- 创建项目并初始化:使用命令行工具进入项目目录,执行
npm init
命令并按照提示填写相关信息,生成package.json
文件。 - 安装 Sequelize:执行
npm install sequelize
命令进行安装。 - 安装数据库驱动:根据需要安装相应的数据库驱动,如
npm install mysql2
(MySQL)、npm install pg
(PostgreSQL)等。 - 配置数据库连接:在项目中创建一个
config.json
文件,配置数据库连接信息,如:
// javascriptcn.com 代码示例 { "development": { "username": "root", "password": "123456", "database": "test", "host": "127.0.0.1", "dialect": "mysql" } }
数据模型定义
在 Sequelize 中,数据模型是使用 JavaScript 类定义的,类名为表名,类属性为字段名和数据类型。例如,定义一个名为 User
的数据模型:
// javascriptcn.com 代码示例 const { Sequelize, DataTypes } = require('sequelize'); const sequelize = new Sequelize('mysql://root:123456@127.0.0.1:3306/test'); const User = sequelize.define('User', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, name: { type: DataTypes.STRING(20), allowNull: false }, age: { type: DataTypes.INTEGER, allowNull: false } }); module.exports = User;
其中,Sequelize
和 DataTypes
分别是 Sequelize 的核心类和数据类型定义,sequelize
是数据库连接实例,define
方法用于定义数据模型。在 define
方法中,第一个参数为表名,第二个参数为字段定义,支持的字段类型包括:
STRING(length)
:字符串类型,length
为长度限制。INTEGER
:整数类型。BIGINT
:长整数类型。FLOAT
:浮点数类型。DOUBLE
:双精度浮点数类型。DECIMAL
:高精度小数类型。BOOLEAN
:布尔类型。DATE
:日期类型。CHAR
:字符类型。TEXT
:文本类型。
其中,primaryKey
表示主键,autoIncrement
表示自增,allowNull
表示是否允许为空。
数据库操作
在定义完数据模型之后,就可以使用 Sequelize 进行数据库操作了。常用的操作包括:
数据库同步
使用 sequelize.sync()
方法可以将数据模型同步到数据库中:
const User = require('./user'); (async () => { await User.sync({ force: true }); // force: true 表示强制同步,会删除已存在的表 console.log('User table has been created'); })();
数据库查询
使用 Model.findAll()
方法可以查询所有记录,使用 Model.findOne()
方法可以查询单条记录,使用 Model.findByPk()
方法可以根据主键查询单条记录:
const User = require('./user'); (async () => { const users = await User.findAll(); // 查询所有记录 const user1 = await User.findOne({ where: { name: 'Tom' } }); // 查询单条记录 const user2 = await User.findByPk(1); // 根据主键查询单条记录 console.log(users, user1, user2); })();
使用 Model.create()
方法可以创建新记录,使用 Model.update()
方法可以更新记录,使用 Model.destroy()
方法可以删除记录:
const User = require('./user'); (async () => { const user = await User.create({ name: 'Tom', age: 18 }); // 创建新记录 await user.update({ age: 20 }); // 更新记录 await user.destroy(); // 删除记录 })();
数据库关联
在 Sequelize 中,可以通过 Model.belongsTo()
、Model.hasOne()
、Model.hasMany()
、Model.belongsToMany()
等方法进行关联操作。例如,定义两个数据模型 User
和 Post
,并进行一对多关联:
// javascriptcn.com 代码示例 const { Sequelize, DataTypes } = require('sequelize'); const sequelize = new Sequelize('mysql://root:123456@127.0.0.1:3306/test'); const User = sequelize.define('User', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, name: { type: DataTypes.STRING(20), allowNull: false }, age: { type: DataTypes.INTEGER, allowNull: false } }); const Post = sequelize.define('Post', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, title: { type: DataTypes.STRING(50), allowNull: false }, content: { type: DataTypes.TEXT, allowNull: false }, userId: { type: DataTypes.INTEGER, allowNull: false } }); User.hasMany(Post, { foreignKey: 'userId' }); Post.belongsTo(User, { foreignKey: 'userId' }); module.exports = { User, Post };
其中,User.hasMany(Post)
表示 User
模型和 Post
模型之间的一对多关系,foreignKey
表示外键,Post.belongsTo(User)
表示 Post
模型和 User
模型之间的多对一关系。
总结
Sequelize 是一款强大的 Node.js ORM 框架,它提供了丰富的数据库操作和查询语言,使得开发者可以方便地进行数据库操作,同时也提高了开发效率和代码质量。本文介绍了 Sequelize 的基础知识和实现方式,包括数据模型定义、数据库操作和数据库关联,希望能够对开发者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/650ba54a95b1f8cacd5b6435