在 Node.js 的 Web 开发中,使用 ORM(Object-Relational Mapping)框架可以方便地操作数据库。Sequelize 是 Node.js 中最流行的 ORM 框架之一,它支持多种数据库类型(如 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server),可以轻松地进行数据库操作。
本文将介绍 Sequelize 中的 Model 定义和使用技巧,帮助读者更好地理解 Sequelize 的基本概念和使用方法。
Model 定义
在 Sequelize 中,Model 是对数据库表的抽象。每个 Model 都对应着数据库中的一张表,通过 Model 可以对表进行增删改查等操作。
定义 Model
定义 Model 的方式非常简单,只需要通过 Sequelize 实例的 define 方法即可。下面是一个简单的例子:
const { Sequelize } = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' }); const User = sequelize.define('User', { firstName: { type: Sequelize.STRING, allowNull: false }, lastName: { type: Sequelize.STRING }, age: { type: Sequelize.INTEGER, defaultValue: 0 } });
上面的代码中,我们定义了一个名为 User 的 Model,它对应着数据库中的一张名为 users 的表。User Model 中定义了三个字段:firstName、lastName 和 age,它们分别对应着数据库表中的三个列。
字段类型
在 Model 中定义字段时,需要指定字段的类型。Sequelize 支持多种数据类型,如下表所示:
数据类型 | 描述 |
---|---|
STRING | 可变长度的字符串 |
CHAR | 固定长度的字符串 |
TEXT | 可变长度的长文本 |
INTEGER | 整数 |
BIGINT | 长整数 |
FLOAT | 浮点数 |
DOUBLE | 双精度浮点数 |
DECIMAL | 十进制数 |
BOOLEAN | 布尔值 |
DATE | 日期 |
DATEONLY | 仅日期,不包含时间 |
TIME | 时间 |
UUID | UUID |
ENUM | 枚举 |
JSON | JSON 数据 |
JSONB | 带有二进制数据的 JSON 数据 |
BLOB | 二进制数据 |
字段选项
在定义 Model 字段时,可以设置多种选项,如下表所示:
选项 | 描述 |
---|---|
type | 字段类型 |
allowNull | 是否允许为空 |
primaryKey | 是否为主键 |
autoIncrement | 是否自动递增 |
unique | 是否唯一 |
defaultValue | 默认值 |
validate | 验证器 |
关联关系
在 Sequelize 中,Model 之间可以建立关联关系。关联关系分为一对一、一对多和多对多三种。
下面是一个简单的例子,展示了如何在两个 Model 之间建立一对多的关系:
const { Sequelize } = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' }); const User = sequelize.define('User', { firstName: { type: Sequelize.STRING, allowNull: false }, lastName: { type: Sequelize.STRING }, age: { type: Sequelize.INTEGER, defaultValue: 0 } }); const Post = sequelize.define('Post', { title: { type: Sequelize.STRING, allowNull: false }, content: { type: Sequelize.TEXT } }); User.hasMany(Post, { as: 'posts' }); Post.belongsTo(User, { as: 'author' });
上面的代码中,我们定义了两个 Model:User 和 Post。User Model 表示用户,Post Model 表示文章。我们通过 User.hasMany(Post) 和 Post.belongsTo(User) 建立了一对多的关系,即一个用户可以拥有多篇文章,一篇文章只能有一个作者。
Model 使用
定义好 Model 之后,我们就可以使用它进行数据库操作了。下面是一些常用的 Model 方法:
创建数据
const user = await User.create({ firstName: 'John', lastName: 'Doe', age: 30 });
上面的代码中,我们使用 User.create 方法创建了一个名为 John Doe、年龄为 30 的用户。
查询数据
const users = await User.findAll();
上面的代码中,我们使用 User.findAll 方法查询了所有用户。
const user = await User.findOne({ where: { firstName: 'John' } });
上面的代码中,我们使用 User.findOne 方法查询了名为 John 的用户。
更新数据
await user.update({ age: 31 });
上面的代码中,我们使用 user.update 方法将用户的年龄从 30 更新为 31。
删除数据
await user.destroy();
上面的代码中,我们使用 user.destroy 方法删除了用户。
总结
本文介绍了 Sequelize 中的 Model 定义和使用技巧,包括 Model 的定义、字段类型、字段选项、关联关系以及常用的 Model 方法。希望本文可以帮助读者更好地理解 Sequelize 的基本概念和使用方法,从而更加高效地进行 Web 开发。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65be82fdadd4f0e0ff80a8ac