我想知道是否有可能获得对象的“原始id”作为查询的结果。每当我向服务器发出请求时,它都会返回节点的“全局标识符”,类似于U29saWNpdGFjYW9UeXBlOjEzNTkxOA==。
该查询类似于下面的查询:
{
allPatients(active: true) {
edges {
cursor
node {
id
state
name
}
}
}返回的结果是:
{
"data": {
"edges": [
{
"cursor": "YXJyYXljb25uZWN0aW9uOjA=",
"node": {
"id": "U29saWNpdGFjYW9UeXBlOjEzNTkxOA==",
"state": "ARI",
"name": "Brad"
}
}
]
}
}如何在数据库级别(例如'112')获得对象的“原始”id,而不是该节点的唯一标识符?
附言:我在服务器端使用了graphene-python和Relay。
发布于 2018-11-20 05:00:24
在Node对象中覆盖默认的to_global_id方法是为我设计的:
class CustomNode(graphene.Node):
class Meta:
name = 'Node'
@staticmethod
def to_global_id(type, id):
return id
class ExampleType(DjangoObjectType):
class Meta:
model = Example
interfaces = (CustomNode,)发布于 2018-06-29 21:11:26
第一个选项,删除作为objectNode声明的接口的relay.Node。
第二种选择,使用自定义的resolve_id函数返回id原始值。
示例
class objectNode(djangoObjectType):
.... Meta ....
id = graphene.Int(source="id")
def resolve_id("commons args ...."):
return self.id希望能有所帮助
发布于 2020-03-10 05:06:55
为了对最上面的答案和那些使用SQLAlchemy对象类型的人进行扩展,这对我很有效:
class CustomNode(graphene.Node):
class Meta:
name = 'myNode'
@staticmethod
def to_global_id(type, id):
return id
class ExampleType(SQLAlchemyObjectType):
class Meta:
model = Example
interfaces = (CustomNode, )如果您有其他使用relay.Node作为接口的ObjectTypes,则需要在您的CustomNode下使用唯一名称。否则,您将得到和断言错误。
https://stackoverflow.com/questions/46490229
复制相似问题