首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无头CMS -遗传/多态性

无头CMS -遗传/多态性
EN

Stack Overflow用户
提问于 2021-11-25 08:33:25
回答 1查看 38关注 0票数 1

有人知道为什么Contentful (和大多数其他无头内容管理系统产品,如GraphCMS)不支持通过接口继承,但是通过使用联合在字段级别的多态性概念似乎都很有用,并为不同的用例增加价值吗?

有时了解类型并确保对象具有某些字段(接口继承)很重要,有时这并不重要,联合字段的多态性很有用。

还有其他的解决方案/模型设计模式吗?

所以我想实现这一点(在GraphQL层):

代码语言:javascript
复制
interface ContentItem {
  title: string;
}

type SpecificContentItemA implements ContentItem {
  body: string;
}

type SpecificContentItemB implements ContentItem {
  body: string;
}

type Space {
  items: ContentItem;
}

而不是Contentful的当前特性:

代码语言:javascript
复制
type SpecificContentItemA {
  body: string;
}

type SpecificContentItemB {
  body: string;
}

type Space {
  items: SpecificContentItemA | SpecificContentItemB;
}

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-11-25 17:05:17

我的一种方法是创建三种内容类型:

  • ContentItem
  • SpecificContentItemA
  • SpecificContentItemB

然后,我将在两个子类型中引用ContentItem,以强制ContentItem中的所有字段都在子类型中。

您可以在子类型中配置引用,以将ContentItem显示为卡片。因此,在浏览SpecificContentItem时,您将看到ContentItem的字段,而不仅仅是引用。

但是,没有办法防止用户在不引用子类型的情况下创建ContentItem。这并不完美,但Contentful正在添加越来越多的功能。也许你可以在社区论坛上提出你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70107975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档