graphene-python - 未调用 get_node 方法
问题描述
我get_node
在 django 对象类型定义中遇到方法问题。在我的情况下似乎没有调用该方法。
我什至尝试pdb
通过在方法内暂停执行来进行调试get_node
,但也没有用。
这是我的代码示例
class DocumentGQL(DjangoObjectType):
class Meta:
model = Document
interfaces = (graphene.relay.Node,)
@classmethod
def get_node(cls, info, id):
logger.info(id)
...
class Query(graphene.ObjectType):
document = graphene.relay.Node.Field(DocumentGQL)
和控制台输出
"POST /graphql/ HTTP/1.1" 200 26
Graphql 查询
{
document(id:"e551a1e5-6fae-47c2-be87-3feeb802bf7f"){
description
id
}
}
图形输出
{
"data": {
"document": null
}
}
我相信我在执行此操作时遵循了文档。我错过了什么吗?请协助。
解决方案
问题在于id
您要传递给查询。在docs的某个地方,埋藏着这个小便条:
id
查询时类型返回的将Ship
是一个标量,其中包含足够的信息让服务器知道它的类型和它的 id。例如,当您查询实例时,实例
Ship(id=1)
将U2hpcDox
作为 id 返回(这是 的 base64 编码Ship:1
),如果我们以后想通过其 id 查询节点,这可能会很有用。
所以基本上,如果id
您的文档是e551a1e5-6fae-47c2-be87-3feeb802bf7f
,那么进行查询的正确方法是在查询中提供一个 id RG9jdW1lbnQ6ZTU1MWExZTUtNmZhZS00N2MyLWJlODctM2ZlZWI4MDJiZjdm=
。当然上面只是简单的输出:
echo -n 'Document:e551a1e5-6fae-47c2-be87-3feeb802bf7f' | base64
我希望这会有所帮助。我和你在同一条船上。
推荐阅读
- java - tikxml 没有类型适配器
- triggers - 忽略或关闭zabbix问题一段时间
- angular - 使用外部数组展平嵌套的 Observables 而无需内部订阅 (RxJS)
- django - 使用 docker compose 获取 Mysql 连接错误
- node.js - 如何将自定义 SQL 查询传递到 app.js 之外的 MySQL 数据库?(Express、Node、Pug 架构)
- postgresql - 带有逻辑运算符“AND”“OR”“NOT”的 PSQL Where 子句
- angular - 基本软件包的角度更新 10 到 11 失败
- apache - .htaccess 用 RewriteRule 替换 RedirectMatch
- regex - 使用正则表达式模式替换熊猫
- reactjs - 反应钩子状态退一步而不更新