如何:具有动态区域/组件的 Strapi GraphQL 突变
Posted
技术标签:
【中文标题】如何:具有动态区域/组件的 Strapi GraphQL 突变【英文标题】:How to: Strapi GraphQL mutation with dynamic zones/component 【发布时间】:2020-06-26 05:06:54 【问题描述】:我正在尝试为 Strapi 创建一个可创建/编辑动态区域的突变。 Strapi 中的动态区域是联合类型。如何使用 动态区域 进行 GraphQL mutation?
确切地说。这里应该是什么内容?
输入:data: inhalt: [text: "hallo"]
在下面的示例中,有一个名为 impressum 的组件。 Inhalt 是动态区域。它包含不同的组件:ComponentPageText、ComponentPageInformation 和 ComponentPageArticle。
这个突变
mutation
updateImpressum(input: data: inhalt: [text: "hallo"])
impressum
inhalt
__typename
返回
预期类型 ImpressumInhaltDynamicZoneInput!,找到 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, page.article]
对应
单一类型 => 动态区域 => [组件]
组件中的字段
page.text:文本page.information:标题、文本、图片page.article:与集合类型 - 文章
架构自省
"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"
]
]
【问题讨论】:
您好,能否分享一下您的组合和内容类型结构。 @JimLAURIE 我在问题中添加了上面的结构。这是你的意思吗?您需要更多信息吗? 【参考方案1】:这是一个如何在 Strapi 中改变动态区域的示例。就我而言,我有一个名为 Tests 的集合和一个名为 New Question 的动态区域,它位于一个名为 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
您必须在动态区域子句中提供__typename:
和__component:
。
【讨论】:
这行得通。非常感谢您的回答!很抱歉回复晚了。 现在(我将 Strapi 3.6.2 与 MongoDB 一起使用)您不必再包含__component
。您只需提供__typename
即可正常工作。【参考方案2】:
你需要这样的东西来处理组件:
mutation($text: String!)
updateImpressum
impressum
inhalt
__typename
... on MyComponentName
text: $text
提示:使用 /graphql 客户端通过键入来自动完成组件类型 “……在”
提示2:使用片段
【讨论】:
感谢您的评论,但我想不通的不是突变后如何查询,而是突变本身。意思是这个字符串“updateImpressum(输入:data:inhalt:[text:“hallo”])”。如果我没有在我的问题中清楚地表达这一点,我很抱歉。以上是关于如何:具有动态区域/组件的 Strapi GraphQL 突变的主要内容,如果未能解决你的问题,请参考以下文章
Strapi - 如何使用自定义属性扩展 graphql 类型模式?
vue js中vue路由器的动态路由与strapi headless CMS - 路由器链接和href标签抛出错误
通过 slug 获取页面和页面数据。 Strapi 和 Nuxt