Plugins Gatsby createSchemaCustomization将自定义字段添加到每个节点

Plugins Gatsby createSchemaCustomization将自定义字段添加到每个节点,plugins,graphql,gatsby,Plugins,Graphql,Gatsby,我正在为其他gatsby前端开发一个gatsby插件,该插件使用graphql检索内容数据。 我正在扩展createSchemaCustomizationAPI,因为我想向每个节点添加一个新字段(比如contentful\u id) Graphql允许按访问者模式更新查询,因此我将contentful\u id字段附加到每个Graphql节点,并在plugingatsby node.js中添加此解析器(setFieldsOnGraphQLNodeType,但它已被弃用)这样,如果graphql节

我正在为其他gatsby前端开发一个gatsby插件,该插件使用graphql检索内容数据。
我正在扩展
createSchemaCustomization
API,因为我想向每个节点添加一个新字段(比如
contentful\u id

Graphql允许按访问者模式更新查询,因此我将
contentful\u id
字段附加到每个Graphql节点,并在plugin
gatsby node.js
中添加此解析器(
setFieldsOnGraphQLNodeType
,但它已被弃用)这样,如果graphql节点找不到
内容id
,它就不会爆炸

exports.setFieldsOnGraphQLNodeType = () => {
  return {
    contentful_id: {
      type: GraphQLString,
      resolve: (source) => {
        return source.contentful_id || '';
      },
    },
  };
};
此外,我不知道每个盖茨比前端在自己的页面中生成了多少节点

我想了解的是以下内容
对于每个gatsby前端中生成的所有类型,添加一个名为
contentful\u id

我正在开发一个Gatsby插件,它使用GraphQL检索有内容的数据

你正在建造的被称为a

通常情况下,您将实现Gatsby
sourceNodes
API。下面是一个改编自:

//首先,您需要从Contentful
const{getContentfulNode,getContentfulId}=require(“./get contentful node.js”)
exports.sourceNodes=({actions,createNodeId,createContentDigest})=>{
const{createNode}=操作
const nodeData=getContentfulNode()
const contentfulId=getContentfulid()
常量节点={
…野田,
contentful\u id//这是将字段添加到节点的位置
//节点元数据
id:createNodeId(`my data-${myData.key}`),
父项:null,
儿童:[],
内部:{
类型:`MyNodeType`,
mediaType:`text/html`,
内容:JSON.stringify(nodeData),
contentDigest:createContentDigest(myData)
}
}
const node=Object.assign({},myData,nodeMeta)
createNode(节点)
}
如果您已经为这些节点提供了源代码,但希望在sourceNodes之外为它们添加一个额外的字段,那么我将使用API。您可以检查节点的类型是否为
ContentfulNode
(例如),如果是,则向其添加一个字段