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

如何在Strapi中对多层嵌套属性的查询结果进行过滤?

Strapi 多层嵌套字段过滤解决方案

先确认字段的过滤权限

别漏了最基础的一步:先给Location.geohash开启过滤权限,不然过滤参数会直接被忽略,返回全量数据。操作步骤:

  • 打开Strapi后台的Content Type Builder
  • 找到你要查询的内容类型,点击编辑
  • 进入Location组件的编辑页面,找到geohash字段
  • 在Advanced settings里勾选Filterable选项,保存后重启Strapi

REST API 直接调用的正确语法

Strapi v4中,嵌套字段过滤需要用点符号定位深层属性:

精准匹配geohash值

GET /api/你的内容类型名?filters[Location.geohash][$eq]=u33d00000000

前缀模糊匹配geohash

GET /api/你的内容类型名?filters[Location.geohash][$startsWith]=u33d

如果Location是关联类型(而非组件),则用嵌套括号格式:

GET /api/你的内容类型名?filters[Location][geohash][$eq]=u33d00000000

Nuxt 中使用useStrapi的过滤写法

用useStrapiQuery的场景

const { data } = useStrapiQuery('你的内容类型名', {
  filters: {
    'Location.geohash': {
      $eq: 'u33d00000000'
    }
  }
})

用useStrapiClient的场景

const strapiClient = useStrapiClient()

const fetchFilteredData = async () => {
  const res = await strapiClient('/api/你的内容类型名', {
    method: 'GET',
    params: {
      filters: {
        'Location.geohash': {
          $eq: 'u33d00000000'
        }
      }
    }
  })
  return res
}

常见踩坑排查

  • 字段名拼写必须完全一致,包括大小写!Strapi对字段名大小写敏感,写错等同于未添加过滤条件
  • 区分组件字段和关联字段:组件用点符号,关联类型用嵌套括号,两种格式可分别尝试
  • 若使用Strapi v3,语法不同,需改用_where参数:
    GET /api/你的内容类型名?_where[Location.geohash]=u33d00000000
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:10:19