【Sequelize】 一对一模型关系【轻松了解】

本文介绍了Sequelize这个Node.js ORM中的一对一模型关系,包括基本概念如Source & Target、BelongsTo和HasOne,以及如何定义、操作和查询这种关系。通过示例展示了如何在User和Account模型间建立一对一关联,并讨论了外键和Eager Loading的使用。
摘要由CSDN通过智能技术生成

Sequelize 一对一模型关系

Sequelize是一个基于 Promise 的 Node.js ORM,目前支持 Postgres、MySQL、SQLite 和 Microsoft SQL Server。它具有强大的事务支持,关联关系、读取和复制等功能。

数据模型中的表关系一般有三种:一对一、一对多、多对多。Sequelize为开发者提供了清晰易用的接口来定义关系、进行表之间的操作。本文介绍如何定义一对一的表关系。

基本概念

Source & Target

从基本概念开始,你将会在大多数关联中使用 sourcetarget 模型。 假设您正试图在两个模型之间添加关联。这里我们在 UserProject 之间添加一个 hasOne 关联。

const User = sequelize.define('User', {
   
    name: Sequelize.STRING,
    email: Sequelize.STRING
})

const Project = sequelize.define('Project', {
   
    name: Sequelize.STRING
})

User.hasOne(Project)

User 模型(函数被调用的模型)是 sourceProject 模型(作为参数传递的模型)是 target

BelongsTo

BelongsTo 关联是在 source model 上存在一对一关系的外键的关联。

一个简单的例子是 Player 通过 player 的外键作为 Team 的一部分。

const Player = this.sequelize.define('player', {
   /* attributes */})
const Team = this.sequelize.define('team', {
   /* attributes */})

Player.belongsTo(Team); // 将向 Player 添加一个 teamId 属性以保存 Team 的主键值

**默认情况下,将从目标模型名称和目标主键名称生成 belongsTo 关系的外键。**默认的样式是 camelCase,但是如果源模型配置为 underscored: true ,那么将使用字段 snake_case 创建 foreignKey。比如:

const User = this.sequelize.define('user', {
   /* attributes */}, {
   underscored: true})
const Company = this.sequelize.define('company', {
   
    uuid: {
   
        type: Sequelize.UUID,
        primaryKey: true
    }
})

User.belongsTo(Company)
//将用字段company_uuid 添加 companyUuid 到 user

此外,默认外键可以用 foreignKey 选项覆盖。 当设置外键选项时,Sequelize 将使用设置的参数值:

const User = this.sequelize.define('user', {
   /* attributes */})
const Company = this.sequelize.define('company', {
    /* attributes */ })

//将 fk_company 添加到 User
User.belongsTo
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值