Sequelize 是一个强大的 ORM 框架,可以轻松地将 JavaScript 对象映射到数据库表。使用 Sequelize,您可以轻松地创建和管理数据库表,可以轻松地连接和查询数据库,可以轻松地进行数据关联,以及可以轻松地执行复杂的查询和筛选操作。在本文中,我们将讨论如何确定 Sequelize 的 “主键和外键”,以及如何关联多个表和过滤数据的实用技巧。
主键和外键
在 Sequelize 中,每个模型都有一个主键和一个外键。主键是用来唯一标识模型实例的属性,通常是一个 ID 属性,而外键是用来与其他模型进行关联的属性。通常,外键是指向其他模型的主键,这种关联称为“一对多”或“多对一”。在 Sequelize 中,你可以使用 belongsTo
和 hasMany
方法来定义一对多关系;使用 hasOne
方法来定义一对一关系。
下面是一个简单的示例,演示如何在 Sequelize 中定义一个简单的模型,该模型具有一个主键和一个外键:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- -- - --- --------------------- ----------- ------------ ----- ------ - ------------------- - --- - ----- ------------------ ----------- ----- -- - -- ---------------- ------ -- -------------- ---- -- --- -- ---- - -- ----- - ----- ----------------- ---------- ----- -- --- ---- - --- ----- ---- - ----------------- - --- - ----- ------------------ ----------- ----- -------------- ---- -- ------ - ----- ----------------- ---------- ----- -- -------- - ----- --------------- ---------- ----- - --- ----------------------- -- -- ---- --- -------- --- ------ ----- --------------------- -- -- ------ --- ---- -------
在以上代码中,我们定义了两个模型:Author
和 Post
。Author
模型具有一个主键 id
和一个名称 name
,Post
模型也具有一个主键 id
和标题 title
以及内容 content
。然后,我们使用 belongsTo
和 hasMany
方法来定义 Author
和 Post
之间的关系。从 Post
模型的角度来看,我们声明 authorId
属性是 Author
模型的主键;从 Author
模型的角度来看,我们声明 Author 模型与 Post 模型有多个关联。
多个表的关联查询
在 Sequelize 中,您可以使用 include
选项将关联的模型包括在查询中。例如,如果您想获取 Post
模型的所有属性以及它关联的 Author
的所有属性,您可以编写以下查询:
Post.findAll({ include: [Author] }).then(posts => { console.log(posts); });
使用 include
方法,Sequelize 将查询 Post
模型,并自动嵌入和查询它的 Author
模型。
您还可以使用 where
选项来使用各种条件过滤查询。例如,如果您想查找 Post
模型中所有作者是 “Adam” 的条目,您可以编写以下代码:
Post.findAll({ include: { model: Author, where: { name: 'Adam' } } }).then(posts => { console.log(posts); });
在以上代码中,我们添加了一个 where
选项来指定要查询的 Author
模型的名字为 “Adam”。Sequelize 将查询 Post
模型,并包含与 Author
模型的过滤结果。如果您有多个模型要包含,您可以在 include
中添加其他模型:
Post.findAll({ include: [ { model: Author, where: { name: 'Adam' } }, { model: Comment } ] }).then(posts => { console.log(posts); });
在以上代码中,我们添加了一个 Comment
模型作为另一个要查询和包含的模型。
结论
Sequelize 是一个非常强大的 ORM 框架,可以轻松地管理和查询数据库。在本文中,我们讨论了如何确定 Sequelize 的 “主键和外键”,以及如何使用 belongsTo
和 hasMany
方法来定义一对多关系和使用 hasOne
方法定义一对一关系。我们还讨论了如何使用 include
和 where
方法在 Sequelize 中关联多个表和筛选数据。我们希望本文对正在学习 Sequelize 的开发人员有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66fbdea2447136260165d6e5