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