Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何使用GraphQL查询Wordpress关系字段?_Reactjs_Wordpress_Graphql_Gatsby - Fatal编程技术网

Reactjs 如何使用GraphQL查询Wordpress关系字段?

Reactjs 如何使用GraphQL查询Wordpress关系字段?,reactjs,wordpress,graphql,gatsby,Reactjs,Wordpress,Graphql,Gatsby,我在试图用GraphQL从Wordpress查询自定义帖子类型“Relationship”时遇到了一个问题 当我尝试查询“post”类型的此类字段时,它只会导致此错误,并中断所有查询: “消息”:“抽象类型WpPostObjectUnion必须在运行时解析为值为{typename:“ActionMonitorAction”}的字段WpPage\u HomepageContent\u heroSlider.buttonLink的对象类型,接收到“undefined”。WpPostObjectUni

我在试图用GraphQL从Wordpress查询自定义帖子类型“Relationship”时遇到了一个问题

当我尝试查询“post”类型的此类字段时,它只会导致此错误,并中断所有查询:

“消息”:“抽象类型WpPostObjectUnion必须在运行时解析为值为{typename:“ActionMonitorAction”}的字段WpPage\u HomepageContent\u heroSlider.buttonLink的对象类型,接收到“undefined”。WpPostObjectUnion类型应提供“resolveType”函数,或者每个可能的类型应提供“isTypeOf”函数,

这是查询中遇到问题的部分:

query HomePageQuery {
  allWpPage(filter: {slug: {eq: "home"}}) {
    nodes {
      slug
      homepage_content {
        heroSlider {
          buttonText
          buttonLink {
            __typename
            ... on WpPost {
              id
            }
          }
        }
      }
    }
  }
}
关于如何解决这个问题或做一些研究的方向有什么想法吗?


谢谢

我找到了一个解决方案来获取“关系:链接到页面或文章”类型的Acf字段所需的数据,如下所示:

exports.createSchemaCustomization = ({ actions }) => {
  const { createTypes } = actions
  const typeDefs = `
      type WpPage_HomepageContent_heroSlider implements Node {
        buttonLink: WpPost
      }
    `
  createTypes(typeDefs)
}
exports.createResolvers = ({ createResolvers }) => {
  const resolvers = {
    Query: {
      allButtonLink: {
        type: ["WpPage_HomepageContent_heroSlider"],
        resolve(source, args, context, info) {
          return context.nodeModel.getAllNodes({ type: "ActionMonitorAction" })
        },
      },
    },
  }
  createResolvers(resolvers)
}
但这是一个繁重的解决方案,我认为这将涉及对这种类型的每个Acf字段执行相同的操作

最佳解决方案:我最终决定将ACF链接字段设置为“Relational:link”类型。 这样就更简单了,我不需要任何“createSchemaCustomization”或“CreateSolvers”解决方案来在GraphQL中的buttonLink字段中获得slug,贡献者仍然可以轻松地在Wordpress backoffice中选择文章

按钮链接现在返回给我:

 "buttonLink": {
   "url": "/2020/09/04/article-test/",
   "target": "",
   "title": "Article test avec image en avant"
}

这就是我所需要的

使用graphiql Playerd来探索可能的类型/属性感谢我所做的。我终于找到了一个好的和一个坏的解决方案。见下文。