You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置scalars与resolvers以获取Cloud Datastore的key/ID值

问题解决方法

根因说明

Google Cloud Datastore的实体Name/ID是实体键(Key)的内置组成部分,不属于实体的自定义属性集合,默认的属性读取逻辑不会自动返回该值,需要显式配置提取逻辑。

操作步骤

  • 第一步:在Datastore实体模型中添加Name/ID的提取逻辑
    如果使用ndb客户端,示例如下:
from google.cloud import ndb

class YourBusinessModel(ndb.Model):
    # 原有自定义字段
    field1 = ndb.StringProperty()
    field2 = ndb.IntegerProperty()

    # 新增实体ID/Name提取属性
    @property
    def entity_key_id(self):
        # 自动适配数字ID或字符串Name
        return self.key.id_or_name

如果使用原生Datastore客户端,直接从返回的实体对象读取entity.key.id_or_name即可。

  • 第二步:在graphene的GraphQL类型定义中新增对应字段的暴露配置
import graphene
from graphene_ndb import NdbObjectType

class YourBusinessModelType(NdbObjectType):
    class Meta:
        model = YourBusinessModel
        # 显式加入新增的entity_key_id字段到返回字段列表
        fields = ("entity_key_id", "field1", "field2")
  • 第三步:调整GraphQL查询语句,加入entity_key_id字段即可获取对应的Name/ID值。

可选配置

如果你需要单独区分数字类型的ID和字符串类型的Name,可以拆分两个属性:

@property
def numeric_id(self):
    return self.key.id
@property
def string_name(self):
    return self.key.name

然后在graphene类型中分别暴露两个字段即可。

内容的提问来源于stack exchange,提问作者rombai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:15:03