4

在 Sanity Studio 中,我试图在输入组件中获取所有 Document 的属性。按照这篇文章官方支持的获取文档内容的方法我可以使用 withDocument HOC 来获取文档数据,但是其中一些具有“引用”类型,因此我只能获取 _ref 和 _type 而不是整个对象。我怎样才能做到?

4

2 回答 2

5

您可以使用取消引用运算符 -> 取消引用这些值。因此,假设您有一个名为 book 的文档,其属性 authors 是一组引用类型。

您可以通过这种方式获取作者数组的值:

const books = await client.fetch(
`*[_type == "book"] {
   ...,
   authors[]->
 }`
)

您可以查看关于 GROQ 查询的Sanity 文档以获取更多更好的信息。

于 2020-11-28T16:06:27.797 回答
2

我已经通过使用 Sanity Client 解决了这个问题。

在组件中导入客户端:

import client from 'part:@sanity/base/client';

开始使用 _ref 作为 GROQ 查询中的 _id 进行查询

...
componentDidMount = () => {
    client.fetch(`*[_type == "template" && _id == "<put _ref value here>"]{
      title,
      body
    }`).then(response => {
      console.info('RESPONSE', response);
    })
  }
于 2019-09-26T16:11:54.007 回答