zef*_*ciu 4 null nullable relay graphql
GraphQL 中关系的良好实践是使用具有边和节点元素的连接模型。建议边和节点都可以为空。这就是我使用的 graphene-sqlalchemy 映射 SQL 关系的方式。
\n\n我的问题是:为什么?就我的从 SQL 数据库提供关系数据的 API 而言,我看不到任何边缘或节点的情况null。因此,如果我在前端使用静态类型语言(如 Typescript 或 Elm),我会发现自己编写了一个样板来处理永远不会发生的情况。
我应该如何null从抽象数据模型的角度理解这些?\xe2\x80\x9c对我来说没有任何连接\xe2\x80\x9d 会翻译为没有边缘的连接。为什么我需要null优势?该null节点更让我烦恼\xe2\x80\x9c有一个连接,但另一端什么都没有\xe2\x80\x9d?请在这里向我解释一下理由。
使用连接使您的架构与中继规范保持一致——在不使用中继时这是否是一个好的实践是有争议的。
在 Relay 中,边和节点可以为空,因为这是规范隐式指定的。
造成这种情况的实际原因是 GraphQL 错误的工作方式。当解析字段时遇到执行错误时,该字段将解析为 null。但是,如果该字段也不为 null,则它实际上无法解析为 null,因此 GraphQL 会将整个父字段设置为 null。如果父字段也不为空,那么它将使其父字段为空......依此类推。GraphQL 错误将以这种方式“冒泡”,直到遇到可为空的字段或data到达根字段(始终可为空)。
换句话说,通过使字段和边可为空,我们允许节点在解析时出错,同时仍然返回有关边本身的信息,更重要的是,仍然返回所有其他边。如果节点和边都非空,则单个节点内的错误将导致edges字段本身解析为空。通过使这些字段可为空,我们可以有效地支持 GraphQL,即使在执行过程中遇到错误,也可以返回部分响应。
| 归档时间: |
|
| 查看次数: |
1883 次 |
| 最近记录: |