关于ndb中的密钥的Google App Engine

时间:2015-08-19 01:24:09

标签: google-app-engine key google-cloud-datastore app-engine-ndb

我是网络开发和谷歌应用引擎的新手。我真的不明白ndb中key的功能是什么,我认为它就像是每行的主键?如果key的功能是识别每个实体中的任何行,我可以用它来进行查询吗?

我也不明白如何在每行中检索密钥。在文档中,我们应该使用此代码返回密钥,并存储到数据库。

sandy_key = sandy.put()

如果我不想存储任何内容但我只想检索密钥该怎么办?例如:

class Post(ndb.Model):
    title = ndb.StringProperty()
    content = ndb.TextProperty()
    created = ndb.DateTimeProperty(auto_now=True) 

然后我进行查询。

q = Post.query(Post.title == "test")

是否可以从该查询中获取密钥?

谢谢

1 个答案:

答案 0 :(得分:2)

您实际上在寻找实体的ID(或标识符)。实体的密钥由标识符和种类组成。这种类型通常是模型的名称,在您的情况下是“发布”。

您可以使用.id()方法检索实体的ID。在您的示例中,您必须首先“获取”或“获取”实体。您提供了一个查询。如果您要获取与查询匹配的一个实体并找到该实体的ID,那么您的代码将如下所示:

q = Post.query(Post.title == "test")
my_entity = q.fetch(1, keys_only=True)
my_key = my_entity.id()

fetch中的“keys_only”参数不是必需的,但它确实节省了资源,因为它告诉fetch只检索密钥。

此信息在NDB Entity Keys文档中进行了解释。