Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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
Javascript GraphQL-嵌套查询的最佳实践是什么?_Javascript_Graphql_Strapi - Fatal编程技术网

Javascript GraphQL-嵌套查询的最佳实践是什么?

Javascript GraphQL-嵌套查询的最佳实践是什么?,javascript,graphql,strapi,Javascript,Graphql,Strapi,我有一个问题,不确定这是我对GraphQL的理解还是我使用的平台(Strapi)的问题 上下文:对于我的用例,我想展示一个项目组合(或“案例”)。每个案例都有一组参与其中的贡献者。此字段独立于案例的作者/创建者。问题在于,出于技术原因,案例内容分为两类:草稿和已发布。这意味着,当我想要获得所有文章时,我需要在嵌套中“深入”一层,以包括贡献者数组 Case -- Draft ---- Caseinfo ------ Contributors -- Published ---- CaseInfo

我有一个问题,不确定这是我对GraphQL的理解还是我使用的平台(Strapi)的问题

上下文:对于我的用例,我想展示一个项目组合(或“案例”)。每个案例都有一组参与其中的贡献者。此字段独立于案例的作者/创建者。问题在于,出于技术原因,案例内容分为两类:草稿和已发布。这意味着,当我想要获得所有文章时,我需要在嵌套中“深入”一层,以包括贡献者数组

Case
-- Draft
---- Caseinfo
------ Contributors

-- Published
---- CaseInfo
------ Contributors
目前,我可以获取所有案例,并获取每个案例的内容及其贡献者:

// Used in Gatsby's `<StaticQuery />`
// This works fine.

  allCase {
    edges {
      node {
        contributors {
          name
        }
      }
    }
  }
因此,一旦参与者字段嵌套更深一层,我就无法查询它了


从概念上讲,您是否可以像这样进行深度嵌套的GraphQL查询,并期望它遵循“树下”的所有关系内容类型?

是的,您不能在较低级别上查询较高级别实体的字段。
contributors
字段仅存在于节点(a
CaseInfo
?)上,而不存在于
CasePublished\u内容
类型上

只是不要把它嵌套起来:

allCase(filter: {status: {eq: "published"}}) {
  edges {
    node {
      published_contents {
        id
        title
      }
      contributors {
        name
      }
    }
  }
}

请发布graphql模式的相关部分。
Case
Draft
Published
的联合体吗?但是Published内容和Draft内容可能有不同的贡献者。。。一个用例可能是,如果我有一个发布版本,上面写着“4个贡献者”,但我开始在草稿状态下进行编辑,修改为“3”@LucasArundell,那么根据您的模式,他们两个都没有贡献者。如果您需要更改,请向我们展示您如何构建/配置您的模式,而不仅仅是查询。哦,明白了。所以我使用的是Strapi-一个生成模式的CMS。我(有限的)理解是,当我在“案例”中创建任何字段时,它们会自动显示在我的查询中。也许这与它是一个嵌套关系的事实有关
allCase(filter: {status: {eq: "published"}}) {
  edges {
    node {
      published_contents {
        id
        title
      }
      contributors {
        name
      }
    }
  }
}