jor*_*gen 6 apollo graphql react-apollo
我遇到一种情况,有时我想查询包含几个字段的许多对象的列表,有时只查询一个包含很多字段的对象。例如,请考虑以下两个查询:
具有许多对象和少数字段的查询:
query {
object(many=true) {
id
name
}
}
Run Code Online (Sandbox Code Playgroud)具有单个对象和多个字段的查询:
query {
object(many=false) {
id
... (many other fields)
}
}
Run Code Online (Sandbox Code Playgroud)我不想在第一个查询中请求多余的字段,因为这将导致请求中包含大量数据(否则,我可以使字段相同,例如,使用a来fragment解决我的问题)。
问题是:存储在缓存中的数据已根据__typename和进行规范化和存储id。这意味着如果查询相同,则查询或查询的原子将相互覆盖。因此,如果第二个查询最后发生,则数据库中的项目没有name与第一个查询关联的组件所必需的字段。
最简单的解决方案就是也要name在第二个查询中提出要求。问题在于,这似乎很脆弱且容易出错。例如,一个人可能创建了第三个查询,却忘记了在name那里查询。
另一个选择是使它们具有不同__typename的,即在后端区分它们。但这似乎是人为的。这些查询实际上是在处理相同类型的对象。
有没有规范的方法可以解决这个问题?
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |