graphene.Node 和 graphene.relay.Node 有啥区别?
Posted
技术标签:
【中文标题】graphene.Node 和 graphene.relay.Node 有啥区别?【英文标题】:What is the difference between graphene.Node and graphene.relay.Node?graphene.Node 和 graphene.relay.Node 有什么区别? 【发布时间】:2019-09-30 17:23:49 【问题描述】:我尝试在 django 中理解 Graphql 并使用 graphene
和 graphene_django
。
我的前端可能会使用 Vuejs 和 Apollo 客户端构建。
互联网上的所有教程都是关于经典的 Graphql 或 Relay。
似乎建议使用带有节点和边缘的中继(是吗?)。
但是 Node 和 Edges 可以通过接口graphene.Node
或接口graphene.relay.Node
使用。
这两者有什么区别吗?
补充问题:即使我不会使用 Relay/React ,使用节点和边是一个好习惯吗? Apollo 文档都是关于经典 Graphql 的。
问候
【问题讨论】:
没什么不同。graphene.Node
是从 graphene.relay.Node
导入的。
再问一个问题,其实我不喜欢node和edges,但是我很想关注它。这意味着我们可以在不同环境之间协调代码。糟糕的标准总比没有标准好。
【参考方案1】:
正如杨华所指出的,relay.Node 和 Node 没有区别。
无论使用 Node 接口是否是一个好习惯,最好的一点是它强制继承 Node 的类型有一个 ID。第二个优势:Connection(向节点的 Connection 和 Edge 添加额外的字段)。
阅读本文以了解如何为所有节点实施 ID:https://atheros.ai/blog/graphql-interfaces-and-unions-how-to-design-graphql-schema
【讨论】:
以上是关于graphene.Node 和 graphene.relay.Node 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Graphene 和 SQLAlchemy 通过 GraphQL API 更新记录