【发布时间】:2020-06-22 17:17:06
【问题描述】:
我刚刚开始使用 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]。
关于为什么会出现这种情况的文档并不多。而且我不确定这是通过 Sanity 还是 Gatsby 强制执行的。
我想我的问题是,为什么 _raw[Anything] 存在于 Gatsby 和/或 Sanity 世界中,人们如何决定使用哪个(除了在 GraphQL 操场和运行时试错)?
【问题讨论】:
标签: reactjs graphql gatsby sanity