在使用 Sequelize 进行数据持久化时,Model 和 Instance 是开发者经常需要接触并区分的概念。本文将详细介绍 Sequelize 中 Model 和 Instance 的区别,帮助开发者更好地理解和使用它们。
Model
Model 相当于数据库中具体的表,它定义了数据表的结构和操作方法。在 Sequelize 中,定义一个 Model 需要指定以下信息:
- 数据表名
- 字段结构
- 字段类型
- 数据表引擎
- 数据表字符集
- 其他选项,例如 timestamps、paranoid、freezeTableName 等
以下是定义一个 User Model 的示例代码:
-- -------------------- ---- ------- ----- --------- - -------------------- ----- --------- - --- --------------------- ----------- ----------- - -------- ------- -- ----- ---- - ------------------------ - --- - ----- ------------------ ----------- ----- -------------- ---- -- ----- ----------------- ---- ------------------ ------ ---------------- -- - ------- --------- -------- ---------- ----------- ----- --------- ----- ---------------- ---- --
上面的代码定义了一个 User Model,包含了 id、name、age 和 email 四个字段,以及一些其他选项。其中 primaryKey 指定了 id 为主键,autoIncrement 指定了主键自增,timestamps 指定了记录的创建时间和更新时间,paranoid 指定了软删除机制,freezeTableName 则指定了表名不为复数形式。
Instance
Instance 则是 Model 的具体实例,操作时主要是对 Instance 进行增删改查等操作。在 Sequelize 中,添加一个 Instance 有以下两种方式:
1. 使用 create 方法
使用 create 方法可以直接新建一个实例并将其保存至数据库。示例代码如下:
User.create({ name: '小明', age: 18, email: 'xiaoming@example.com' })
2. 使用 build 和 save 方法
使用 build 方法可以新建一个空的实例,之后使用 save 方法保存该实例至数据库。示例代码如下:
const user = User.build({ name: '小芳', age: 20, email: 'xiaofang@example.com' }) user.save()
增删改查操作
使用 Sequelize 进行增删改查操作主要包含以下几个常用方法:
- create:新建一个实例并将其保存至数据库
- findOne:根据条件查询一个实例
- findAll:根据条件查询多个实例
- increment 和 decrement:自增或自减一个属性值
- update:更新一个或多个实例
- destroy:删除一个或多个实例
以下是对上面方法的示例代码:
-- -------------------- ---- ------- -- ------------- ------------- ----- ----- ---- --- ------ ---------------------- -- -- ------ -------------- ------ - ----- ---- - ------------ -- - ----------------------- -- -- ------ -------------- ------ - ---- - ------------------ -- - - ------------- -- - -------------------------- -- -- ------- -------------- ------ - ----- ---- - ------------ -- - --------------------- -- -- ------ ------------- ----- ---- -- - ------ - ----- ---- - -- -- ------ -------------- ------ - ----- ---- - --
总结
本文详细介绍了 Sequelize 中 Model 和 Instance 的区别,以及常见的增删改查操作。希望本文能对开发者更好地理解和使用 Sequelize 有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a8c79f48841e9894527d6d