我刚刚开始将Gatsby与Sanity无头 CMS 一起使用。
在大多数情况下,它非常简单。但是了解通过 GraphQL 查询数据的最佳实践仍然困扰着我。我目前的做法只是在 GraphQL 操场上疯狂地点击我的 CMS 结构并找到我想要的。这行得通,但这种方法缺乏统一性让我感到不安。
例如,如果我想要某个 CMS 中某处的英雄图像,我需要执行以下操作:
query SomePageQuery($id: String) {
sanitySomePage(id: { eq: $id }) {
id
heroImage {
asset {
fluid(maxWidth: 1500) {
...GatsbySanityImageFluid
}
}
}
}
}
但是如果我想要一些PortableText块,那么我需要查询_raw
任何类型的相应字段。所以,如果我的类型是introText
,盖茨比也提供了一个_rawIntroText
. 我只能从这个_raw
版本的数据中获取完整的 PortableText。像这样:
query SomePageQuery($id: String) {
sanitySomePage(id: { eq: $id }) {
id
_rawIntroText
}
}
似乎,对于某些数据您可以使用[Type]
,有时您必须使用_raw[Type]
.
没有大量文档说明为什么会这样。而且我不确定这是通过理智还是盖茨比强制执行的。
我想我的问题是,为什么_raw[Anything]
Gatsby 和/或 Sanity 世界中存在,人们如何决定使用哪个(除了在 GraphQL 操场和运行时试错)?