如何在 Sanity.io 的 inputComponent 中检索引用的字段数据?
Posted
技术标签:
【中文标题】如何在 Sanity.io 的 inputComponent 中检索引用的字段数据?【英文标题】:How to retrieve a referenced field data inside inputComponent in Sanity.io? 【发布时间】:2019-08-21 01:50:47 【问题描述】:在 Sanity Studio 中,我试图在输入组件中获取所有 Document 的属性。按照这篇文章An officially supported way to get at the document content 我可以使用 withDocument HOC 来获取文档数据,但是其中一些具有“引用”类型,因此我只能获取 _ref 和 _type 而不是整个对象。我怎样才能做到?
【问题讨论】:
【参考方案1】:您可以使用取消引用运算符 -> 取消引用这些值。因此,假设您有一个名为 book 的文档,其属性 authors 是一组引用类型。
您可以通过这种方式获取作者数组的值:
const books = await client.fetch(
`*[_type == "book"]
...,
authors[]->
`
)
您可以在 GROQ 查询中查看Sanity's docs 以获取更多更好的信息。
【讨论】:
【参考方案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);
)
【讨论】:
以上是关于如何在 Sanity.io 的 inputComponent 中检索引用的字段数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Sanity.io 的 inputComponent 中检索引用的字段数据?