【问题标题】:Sanity.io groq filter inside an array of objects using a reference fieldSanity.io groq 使用引用字段在对象数组中过滤
【发布时间】:2022-01-25 01:13:55
【问题描述】:

我一直在尝试优化我的 groq 查询。

我的页面内容包含一个数组对象(不同的语言)。

我一直在使用 Sanity Vision 来了解如何过滤输出,以便只获得正确语言的内容。

//query
*[_type == "home"]{
  content[]{
    "language": metaData.language ->.language,
  },
}

// query result
"result":[
  0:{
    "content":[
      0:{
        "language":"en-AU"
      }
      1:{
        "language":"th-TH"
      }
    ]
  }
]

我只想获得与语言匹配的 1 个内容。 我试过了,但是没有用

*[_type == "home"]{
  content[]{
    ...,
    "language": metaData.language ->.language,
  },
}[0][content[].language == "en-AU"]

有人知道怎么做吗?

谢谢!

【问题讨论】:

    标签: sanity groq


    【解决方案1】:

    终于找到答案了

    我知道返回数据里面有一个数组,你可以使用另一个[]进一步过滤它,在这种情况下[metaData.language->.language match $language]

    
      *[_type == "home"]{
        content[metaData.language->.language == $language]{
          ...,
          metaData {
            ...,
            language->
          }
        }[0]
      }[0]
    

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    • 请记住,match 用于文本,并遵守面向文本的规范化/标记化规则。它可能不会按您期望的方式工作。你应该在这里使用==
    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2023-03-30
    • 2020-02-01
    • 1970-01-01
    • 2022-11-13
    • 2023-03-29
    相关资源
    最近更新 更多