【问题标题】:Google App Engine about key in ndbGoogle App Engine 关于 ndb 中的键
【发布时间】:2015-08-19 01:24:09
【问题描述】:

我是网络开发的新手,也是谷歌应用引擎的新手。我真的不明白 ndb 中键的功能是什么,我认为它就像每一行的主键?如果 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")

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    您实际上是在寻找实体的 id(或标识符)。一个实体的key由一个标识符和一个种类组成。 kind 通常是模型的名称,在您的例子中是“Post”。

    您可以使用 .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 文档中解释了此信息。

    【讨论】:

    • 它工作正常。它都是关于 fetch 和 get 命令的,在使用 get/fetch 之后,我可以看到每个实体的真实结构。非常感谢楼主
    猜你喜欢
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2016-09-19
    相关资源
    最近更新 更多