有人知道为什么Contentful (和大多数其他无头内容管理系统产品,如GraphCMS)不支持通过接口继承,但是通过使用联合在字段级别的多态性概念似乎都很有用,并为不同的用例增加价值吗?
有时了解类型并确保对象具有某些字段(接口继承)很重要,有时这并不重要,联合字段的多态性很有用。
还有其他的解决方案/模型设计模式吗?
所以我想实现这一点(在GraphQL层):
interface ContentItem {
title: string;
}
type SpecificContentItemA implements ContentItem {
body: string;
}
type SpecificContentItemB implements ContentItem {
body: string;
}
type Space {
items: ContentItem;
}而不是Contentful的当前特性:
type SpecificContentItemA {
body: string;
}
type SpecificContentItemB {
body: string;
}
type Space {
items: SpecificContentItemA | SpecificContentItemB;
}谢谢!
发布于 2021-11-25 17:05:17
我的一种方法是创建三种内容类型:
然后,我将在两个子类型中引用ContentItem,以强制ContentItem中的所有字段都在子类型中。
您可以在子类型中配置引用,以将ContentItem显示为卡片。因此,在浏览SpecificContentItem时,您将看到ContentItem的字段,而不仅仅是引用。

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