我需要在GraphQL(MongoDB作为数据库)中创建一个数据结构,该数据结构表示以下架构:
所以一篇文章可能看起来像这样:
{
article-group-number: 100,
length: 5.5
}
另一篇文章可能看起来像这样:
{
article-group-number: 101,
width: 2
}
甚至可能有一些文章引用了另一篇文章(但没有循环结构)。
我需要能够为每个商品编号创建和维护不同的验证规则(功能)。 我该怎么办?
我当时在考虑GraphQL中的 union 类型,但是这些类型只能在此时读取,而不能写入(通过“变异”)。 我是否应该将这些文章保存为纯JSON数据,并手动进行所有验证?通过这种方式,我将失去逻辑结构,因为在我看来,此JSON数据字段只是某种“混乱的数据”,因为通过GraphQL会丢失所有逻辑。
有没有更干净的方法?
答案 0 :(得分:0)
两个选项:
您可以从GraphQL本身获取线索-架构中使用的__Type类型具有“种类”字段,并且有许多取决于类型的属性。例如,对象类型可以具有字段,而其他类型的类型则不能。 GraphQL只是将所有可能的属性放入__Type类型,并在它们不适用于该类型的类型时让它们采用空值。您可以做类似的事情,只是让您的文章具有所有可能的属性。
或者您可以使用文章类型的并集,也许全部实现一个通用的文章接口。对于突变来说,这实际上不是问题。由于变异位于与查询完全不同的命名空间中,因此它们可以做任何您想做的事情-变异的类型不必与查询的类型相同,实际上通常不是。
两种方法都有效。不过,第二种方法更复杂,因此,如果要执行此操作,请确保从中获得某种好处。