GraphQL-嵌套查询的最佳做法是什么?

时间:2020-09-20 18:23:36

标签: javascript graphql strapi

我遇到问题,不确定是我对GraphQL的理解还是我正在使用的平台(Strapi)的问题。

上下文:对于我的用例,我想显示一个项目组合(或“用例”)。每个案例都有一组工作人员。此字段与案例的作者/创建者分开。问题在于,出于技术原因,案例的内容分为两种类型:草稿和公开。这意味着当我要获取所有文章时,需要在嵌套中进行“更深入的研究”,以包括贡献者数组。

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

-- Published
---- CaseInfo
------ Contributors

当前,我可以获取allCase并获取每个案例的内容以及其贡献者:

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

  allCase {
    edges {
      node {
        contributors {
          name
        }
      }
    }
  }

但是当我尝试包括嵌套

  allCase(filter: {status: {eq: "published"}}) {
    edges {
      node {
        published_contents {
          id
          title
          // Cannot query field "contributors" on type "CasePublished_contents".
          contributors {
              name
          }
        }
      }
    }
  }

那么,一旦“贡献者”字段嵌套更深一层,我便无法查询它?

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

1 个答案:

答案 0 :(得分:0)

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

只是不要嵌套它:

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