如何:带动态区域/组件的Strapi GraphQL突变

如何:带动态区域/组件的Strapi GraphQL突变,graphql,strapi,Graphql,Strapi,我正在尝试为Strapi创建一个变种,创建/编辑动态区域。Strapi中的动态分区是联合类型。如何使用动态区域进行图形ql突变 确切地说,。这里的内容应该是什么? 输入:{data:{inhalt:[{text:“hallo”}]} 在下面的示例中,有一个名为impressum的组件Inhalt是动态区域。它包含不同的组件:ComponentPageText、ComponentPageInformation和ComponentPageArticle 这种突变 mutation { updat

我正在尝试为Strapi创建一个变种,创建/编辑动态区域。Strapi中的动态分区是联合类型。如何使用动态区域进行图形ql突变

确切地说,。这里的内容应该是什么?

输入:{data:{inhalt:[{text:“hallo”}]}

在下面的示例中,有一个名为impressum的组件Inhalt是动态区域。它包含不同的组件:ComponentPageText、ComponentPageInformationComponentPageArticle

这种突变

mutation {
  updateImpressum(input: {data: {inhalt: [{text: "hallo"}]}}) {
    impressum {
      inhalt {
        __typename
      }
    }
  }
}
返回

预期类型为ImpressMinHaltDynamicZoneInput!,找到{text:\'hallo\'};找不到组件。应为以下之一:ComponentPageText、ComponentPageInformation、ComponentPageArticle

这将返回相同的错误

mutation {
  updateImpressum(input: {data: {inhalt: [{ComponentPageText: {text: "hallo"}}]}}) {
    impressum {
      inhalt {
        __typename
      }
    }
  }
}
模式内省返回

{
  "name": "ComponentPageText",
  "kind": "OBJECT"
}
结构(评论后添加)

impressum=>inhalt=>[page.text,page.information, 第页[文章]

对应于

单一类型=>动态区域=>[组件]

组件中的字段

页面文本:文本
页面信息:标题、文本、图像
页面.文章:与收藏类型的关系-文章

模式内省

{
  "name": "updateImpressum",
  "__typename": "__Field",
  "description": "",
  "args": [
    {
      "name": "input",
      "description": "",
      "__typename": "__InputValue",
      "type": {
        "kind": "INPUT_OBJECT",
        "name": "updateImpressumInput",
        "possibleTypes": null,
        "interfaces": null,
        "inputFields": [
          {
            "name": "data",
            "description": "",
            "__typename": "__InputValue"
          }
        ]
      }
    }
  ]
}

要使用组件,您需要这样的东西:

mutation($text: String!) {
  updateImpressum {
    impressum {
      inhalt {
        __typename
        ... on MyComponentName {
            text: $text
        }
      }
    }
  }
}
提示:使用/graphql客户端通过键入 “…在”

技巧2:使用片段


下面是一个如何在Strapi中变异动态区域的示例。在我的例子中,我有一个名为Tests的集合和一个名为newquestion的动态区域,该区域位于一个名为questions group的组下:

mutation {
 createTest(input:{ data:{
  title:"Test Title Here"
  questions: [
     {
      __typename: "ComponentQuestionsGroupNewQuestion"
      __component: "questions-group.new-question"
      title:"What is 4 + 20?"
      correct_answer: "24"
      wrong_answer: "420"
    }
  ]
  }}) {
    test {
      id
    }
  }
}

您必须在dynamic zone子句中提供
\uu typename:
\uu组件:

您好,请分享您的组件和内容类型结构。@JimLAURIE我在问题中添加了上述结构。这就是你的意思吗?你还需要更多的信息吗?谢谢你的评论,但我不知道的不是变异后如何查询,而是变异本身。意思是这个字符串“updateImpressum(输入:{data:{inhalt:[{text:}]})”。如果我在问题中没有清楚地表达这一点,我很抱歉。这是有效的。非常感谢你的回答!很抱歉,我没有及时回复。现在(我在MongoDB中使用Strapi 3.6.2)您不必再包含
\u组件了。您只需提供
\uuu typename
,它就能正常工作。