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 并使用 graphenegraphene_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 更新记录

Graphene-Django 和模型属性

为啥在graphene-django中中继?

如何使用 GraphQL、Graphene 和 Relay 改变现有数据?

如何将 DRF 序列化器与 Graphene 一起使用

具有多对多和直通表的 Graphene-django