哪些中继对象必须实现`Node`?

Eva*_*van 5 relayjs

https://facebook.github.io/relay/graphql/objectidentification.htm非常清楚Node它的行为和行为,但它没有指定哪些对象必须实现它,或者如果你的对象没有它的后果是什么实现它.是否有一组不起作用的功能?这些物体完全被忽略了吗?并非现有规范中的所有对象(例如pageInfo)都实现它,因此它显然不是普遍要求的,但pageInfo在某种程度上是一种特殊情况.

win*_*ent 5

考虑Node接口的另一种方式是实现它的对象是可重新获取的。可重取性意味着一个对象有一个 ID,我可以用它来识别和检索它;按照惯例,这些 ID 通常是不透明的,但将包含类型信息和该类型中的标识符(例如,字符串的 Base-64 编码,如“Account:1234”)。

Relay 将通过两种方式利用可重取性:

  • 在称为“差异化”的过程中,如果您已经有一些由 ID 标识的对象的数据QWNjb3VudDoxMjM0(例如nameaddress字段),然后导航到我们显示一些附加字段(location, createdAt)的视图,那么 Relay 可以制作一个“重新获取”节点但仅请求缺少的字段的最小查询。
  • 相关地,Relay 将区分连接并利用Node界面来填充那些缺失的数据(例如:通过某种导航组合,您可能拥有视图中某些项目的完整信息,但需要填写视图中location的某些项目范围,或者您可以通过突变修改连接中的项目)。因此,在基本分页中,Relay 通常最终会进行first+after查询以扩展连接,但是如果您在实际应用中检查其网络流量,您还会看到它对node连接内的项目进行查询。

所以是的,你pageInfo没有实现是对的,这样做Node并没有真正意义。