Sequelize 如何添加联合主键?
在 Sequelize 中,我们使用关系型数据库来存储数据。在数据库中,每个表都要有一个主键,用于唯一标识每一行数据。有些情况下,一个表需要使用多个字段来作为主键,这就需要添加联合主键。
下面,我们将介绍如何在 Sequelize 中添加联合主键。
定义模型
首先,我们需要定义一个模型,并在模型中定义联合主键。
-- -------------------- ---- -------
----- - ---------- --------- - - ---------------------
----- --------- - --- --------------------- ----------- ----------- -
-------- -------
---
----- ---- - ------------------------ -
--- -
----- ------------------
----------- -----
-------------- -----
---------- -----
--
----- -
----- -----------------
---------- -----
--
---- -
----- ------------------
---------- ------
------------- --
-
-- -
---------- -------
----------- ------
-------- -
-
------- -----
------- -------- ------
-
-
---代码中,我们创建了一个 User 模型,并在模型中定义了 id、name 和 age 字段。接着,我们在模型的 options 中定义了表名和索引,索引中包含了 name 和 age 两个字段。
定义联合主键之后,我们需要在模型中明确指定每个字段是否允许为空,并使用唯一性约束来保证不会出现重复数据。
同步模型
在定义完成模型之后,我们需要使用 Sequelize.sync() 方法来同步模型和数据库。
sequelize.sync()
.then(() => console.log('Tables have been synced'))
.catch((e) => console.error('Failed to sync tables', e));添加数据
在模型和数据库同步之后,我们就可以使用模型来添加数据了。
User.create({
name: 'Tom',
age: 18
})
.then((user) => {
console.log(user.toJSON());
})
.catch((e) => console.error('Failed to create user', e));在上面的代码中,我们使用 User.create() 方法来添加一条数据。该方法返回一个 Promise 对象,我们可以使用 .then() 方法来获取添加成功后的数据。在获取到数据后,我们使用 .toJSON() 方法将数据转换成 JSON 格式并输出到控制台。
查询数据
我们可以使用模型的 findAll() 方法来查询数据,对于联合主键,我们可以使用 where 条件来查询数据。
-- -------------------- ---- -------
--------------
------ -
----- ------
---- --
-
--
------------- -- -
---------------------------- -- ----------------
--
---------- -- --------------------- -- -------- ------- ----在上面的代码中,我们使用 User.findAll() 方法来查询所有 name 为 'Tom' 和 age 为 18 的数据。查询结果是一个数组,我们可以使用 .map() 方法遍历数组并使用 .toJSON() 方法将每条数据转换成 JSON 格式并输出到控制台。
总结
在本文中,我们介绍了如何在 Sequelize 中添加联合主键。我们首先定义了一个 User 模型,并在模型中定义了 id、name 和 age 字段,并且使用唯一性约束来保证不会出现重复数据。接着,我们使用 Sequelize.sync() 方法同步模型和数据库,使用 User.create() 方法添加一条数据,使用 User.findAll() 方法查询数据。
对于关系型数据库的初学者来说,这些操作都是必须掌握的。掌握 Sequelize 中添加联合主键的方法,对于提高数据的存储和管理能力,以及提高开发效率都非常重要。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/644f84bd980a9b385b8f84c9