gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:49:13 31 4
gpt4 key购买 nike

https://facebook.github.io/relay/graphql/objectidentification.htm非常清楚 Node是以及它的行为方式,但它没有指定哪些对象必须实现它,或者如果你的对象不实现它会产生什么后果。是否有一组功能不起作用?这些对象是否完全被忽略?并非现有规范中的所有对象(例如 pageInfo )都实现了它,因此它显然不是普遍需要的,而是 pageInfo有点特例。

最佳答案

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

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

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

  • 所以是的,你是对的 pageInfo未实现 Node ,而且这样做没有任何意义。

    关于relayjs - 哪些中继对象必须实现 `Node` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34948420/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com