[英]GraphQL schema design - context dependent fields
我一直在努力寻找在 GraphQL 中对“上下文相关”字段进行建模的正确方法。 这是工作流系统的数据结构示例。 文档在工作流程中通过不同的步骤:
workflow {
steps {
name
},
documents {
type,
step {
name,
actionToComplete
}
}
}
大部分都是直截了当的。 一个工作流有多个步骤。 在一个工作流中有多个文档。 每个文档都在某个步骤中。 要进入下一步,用户需要完成一个操作。
我正在努力解决的问题是actionToComplete
字段。 该字段的值由查询它的上下文决定。 因此,根据登录用户、他在系统中的角色和文档(其类型、是否包含敏感信息、附件等),确定actionToComplete
。 actionToComplete
字段仅在查询 Document 上下文中的 Step 时相关。 仅查询工作流的所有步骤时,它并不相关,因为它不包含任何有意义的数据。
我正在努力解决的问题:
有人对如何建模这样的东西有任何建议吗?
我个人认为将字段移动到Document
类型没有任何问题——您可能想多了。 该字段仍然与文档相关,即使在概念上它也与步骤相关。 如果每个文档有多个步骤,情况会有所不同,但这里的情况并非如此。 我也并不真正将数据扁平化视为主要问题。
也就是说,这是显式创建两个独立类型的一个很好的用例。 拥有代表相同域模型的不同类型非常好,特别是如果您需要根据父字段公开不同的字段。 我们倾向于避免模式中的重复,但在这种情况下,这是完全合理的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.