如何在Sanity.io的inputComponent内部检索引用的字段数据?

时间:2019-03-30 06:56:01

标签: reactjs sanity

在Sanity Studio中,我试图将所有Document的属性都包含在输入Component中。按照本文An officially supported way to get at the document content的介绍,我可以使用withDocument HOC来获取Document数据,但是其中一些具有“引用”类型,因此我只能获取_ref和_type而不是整个对象。我该怎么做?

更新:我已经通过使用Sanity Client弄清楚了。

将客户端导入您的组件中

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

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

...
componentDidMount = () => {
    client.fetch(`*[_type == "template" && _id == "<put _ref value here>"]{
      title,
      body
    }`).then(response => {
      console.info('RESPONSE', response);
    })
  }

2 个答案:

答案 0 :(得分:1)

我已经使用Sanity Client弄清楚了。

将客户端导入您的组件中

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

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

...
componentDidMount = () => {
    client.fetch(`*[_type == "template" && _id == "<put _ref value here>"]{
      title,
      body
    }`).then(response => {
      console.info('RESPONSE', response);
    })
  }

答案 1 :(得分:0)

您可以使用解引用运算符->来解引用值。因此,假设您有一个名为book的文档,其中包含属性作者,它是引用类型的数组。

您可以通过以下方式获取authors数组的值:

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

您可以在GROQ查询上查看Sanity's docs,以获取更多更好的信息。