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

如何在Strapi中通过查询获取关联关系的深层属性?

Strapi Entity Service 获取深层关联数据的解决方案

populate: '*'只能展开第一层关联关系,要获取嵌套的最深层级关联,有两种可行方案:

1. 手动指定嵌套关联结构

直接在populate里逐层定义需要展开的关联字段,比如你的name模型关联了category,category又关联了tag,可以这么写:

const entries = await strapi.entityService.findMany(api::name.name, {
  populate: {
    category: {
      populate: {
        tag: {
          populate: '*' // 若tag还有更深层关联,继续嵌套定义即可
        }
      }
    },
    // 其他需要展开的关联字段也按这个格式添加
  }
});

这种方式能精准控制每个关联字段的展开范围,避免不必要的数据查询。

2. 使用深度参数(Strapi 4.11+版本支持)

如果你的Strapi版本是4.11及以上,可以用deep参数指定递归展开的层级,不用手动写嵌套结构:

const entries = await strapi.entityService.findMany(api::name.name, {
  populate: {
    '*': {
      deep: 3 // 这里的数字代表要展开的层级,比如3层就会递归获取到第三层关联数据
    }
  }
});

注意事项

  • 不要盲目设置过大的deep值,层级过深会导致查询性能下降,返回的数据量也会激增
  • 可以混合两种方式,比如对特定字段单独设置深度,其他字段用通配符:
    populate: {
      category: { deep: 2 },
      '*': { deep: 1 }
    }
    

内容的提问来源于stack exchange,提问作者Muhammad Shafaat Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:39:40