2

我按照健全性文档创建了一个 internalLink 类型,并且根据关于将 internalLinks 与 graphql api 一起使用的问题说明,我将它创建为一个单独的类型,如下所示:

export default {
    name: 'internalLink',
    type: 'object',
    title: 'Internal link',
    fields: [
      {
        name: 'reference',
        type: 'reference',
        title: 'Reference',
        to: [
          { type: 'helpTopic' },
          // other types you may want to link to
        ]
      }
    ]
  }

我已将其添加 schema.js,如下所示:

import internalLink from './internalLink'

export default createSchema({
  name: 'default',
  types: schemaTypes.concat([
    internalLink,
    helpTopic,
    blockContent,
    figure,
    slideshow,
  ])
})

并将其添加到注释中,如下所示:

annotations: [
          {
            type: 'internalLink'
          }
        ]

当我在 Gatsby 中使用 graphiql 时,如果我不使用 resolveReferences,那么我会正确获得未解析的引用:

"markDefs": [
                {
                  "_key": "00a07e239d3d",
                  "_type": "internalLink",
                  "reference": {
                    "_ref": "7c635eee-0d98-5335-a376-4101922ca4b7",
                    "_type": "reference"
                  }
                }
              ]

但是,当我使用 时_rawBody(resolveReferences:{maxDepth:1000}),引用没有得到解析并返回为 null:

"markDefs": [
                {
                  "_key": "00a07e239d3d",
                  "_type": "internalLink",
                  "reference": null
                }
              ]

这是一个错误还是我做错了什么。我尝试过阅读文档,但无法弄清楚这一点,并且示例 gatsby sanity 组合项目没有 internalLinks 示例。

我在这里先向您的帮助表示感谢。

4

1 回答 1

2

截至目前,注释不能接受这样的模式类型。您必须将整个模式块放在那里。有点奇怪的限制。我认为有人已经在 Sanity.io 的 Github 存储库上提出了关于此问题的票证/功能请​​求。

于 2020-03-20T18:37:43.377 回答