Graphql 在schemaCustomization中使用sourceNodes中的节点

Graphql 在schemaCustomization中使用sourceNodes中的节点,graphql,gatsby,Graphql,Gatsby,在我的gastby节点文件中,我使用了API响应中的sourceNodes来创建节点。我想用另一种类型解析此节点。问题是createSchemaCustomization在sourceNodes之前运行,因此节点类型不存在 调用“building schema”缺少onError处理程序,错误为“错误:名为“Type”的类型不存在”。Stacktrace was'错误:名为“Type”的类型不存在 大概是这样的: exports.sourceNodes = async ({ actions:

在我的
gastby节点
文件中,我使用了API响应中的
sourceNodes
来创建节点。我想用另一种类型解析此节点。问题是
createSchemaCustomization
sourceNodes
之前运行,因此节点类型不存在

调用“building schema”缺少onError处理程序,错误为“错误:名为“Type”的类型不存在”。Stacktrace was'错误:名为“Type”的类型不存在

大概是这样的:

exports.sourceNodes = async ({
  actions: { createNode },
  createContentDigest,
  getNodesByType,
  createNodeId,
}) => {
  const data = getNodesByType('SOME_TYPE')

  data.forEach(async (item, idx) => {
    const result = await fetch(API_ENDPOINT)
    const resultData = await result.json()
    
    const data = resultData.response

    const nodeMeta = {
      id: item.id,
      parent: null,
      children: [],
      internal: {
        type: `TYPE`,
        contentDigest: createContentDigest(data)
      }
    }

    // create node for build time data example in the docs
    const node = Object.assign({}, data, nodeMeta)
    createNode(node)
  })
}

exports.createSchemaCustomization = ({ actions, schema }) => {
  const { createTypes } = actions
  const typeDefs = [
    `type SOME_TYPE implements Node {
      extra_fields: TYPE @link(from: "item.id")
    }`
  ]
  //  
  createTypes(typeDefs)
}

这不起作用,因为调用
createSchemaCustomization
时,
类型不存在。在查看文档时,我看到了
createResolver
,这可能就是我要找的。有人做过类似的事情吗?

真奇怪。。根据文档,
actions.createTypes
也可以在
sourceNodes
钩子中使用,您是否尝试过将该代码块移动到sourceNodes下?有趣的是,我不知道我可以在
sourceNodes
中使用
createTypes
。我通过扩展一个字段暂时解决了这个问题,但使它们成为节点有好处。@DerekNguyen
createTypes
仅在
createSchemaCustomization
中提供,根据文档(小字体)-似乎我可以在
sourceNodes
中创建节点,但不能在
createSchemaCustomization
中使用它们,或者在
createSchemaCustomization
中创建节点,但仍然不能在
@link
指令中使用它们。啊,这太奇怪了,我看到链接到。你有没有可能创造一个最小的复制品?这很奇怪。。根据文档,
actions.createTypes
也可以在
sourceNodes
钩子中使用,您是否尝试过将该代码块移动到sourceNodes下?有趣的是,我不知道我可以在
sourceNodes
中使用
createTypes
。我通过扩展一个字段暂时解决了这个问题,但使它们成为节点有好处。@DerekNguyen
createTypes
仅在
createSchemaCustomization
中提供,根据文档(小字体)-似乎我可以在
sourceNodes
中创建节点,但不能在
createSchemaCustomization
中使用它们,或者在
createSchemaCustomization
中创建节点,但仍然不能在
@link
指令中使用它们。啊,这太奇怪了,我看到链接到。你有没有可能创造一个最小的复制?