You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sequelize嵌套关联查询:如何获取三张关联表的全部数据?

获取关联表的全部关联数据(Sequelize 实现)

针对你定义的三级关联表结构(X→Y→Z,或organisation→application→member),可以通过Sequelize的嵌套include选项一次性查询所有层级的关联数据,以下是具体实现方式:

从顶层表查询完整关联数据

如果要从最上层的X(或organisation)出发,获取所有关联的Y(或application)及Z(或member)数据,写法如下:

通用X/Y/Z示例

const allXWithRelations = await X.findAll({
  include: [
    {
      model: Y,
      include: [Z] // 嵌套包含Z表的关联数据
    }
  ]
});

对应organisation/application/member示例

const allOrgsWithAppsAndMembers = await db.organisation.findAll({
  include: [
    {
      model: db.application,
      include: [db.member]
    }
  ]
});

查询结果里,每个顶层对象(X或organisation)会包含一个对应关联表的数组(比如Ys或applications),数组里的每个Y(或application)对象又会包含其关联的Z(或member)数组(比如Zs或members),完整覆盖三级关联数据。

从底层表反向查询完整关联数据

如果需要从最底层的Z(或member)出发,反向获取关联的Y(或application)及X(或organisation)数据,写法类似:

通用X/Y/Z示例

const allZWithRelations = await Z.findAll({
  include: [
    {
      model: Y,
      include: [X] // 反向包含X表数据
    }
  ]
});

对应organisation/application/member示例

const allMembersWithAppsAndOrgs = await db.member.findAll({
  include: [
    {
      model: db.application,
      include: [db.organisation]
    }
  ]
});

可选:添加筛选条件

如果不需要全量数据,还可以在查询中加入where条件筛选特定记录,比如只查询ID为1的X及其关联数据:

const targetXWithRelations = await X.findAll({
  where: { id: 1 },
  include: [
    {
      model: Y,
      include: [Z]
    }
  ]
});

内容的提问来源于stack exchange,提问作者Janaki Raman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:45:38