Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 谷歌Appengine:奇怪的按键取名字行为_Google App Engine_Entity Groups - Fatal编程技术网

Google app engine 谷歌Appengine:奇怪的按键取名字行为

Google app engine 谷歌Appengine:奇怪的按键取名字行为,google-app-engine,entity-groups,Google App Engine,Entity Groups,更新:经过进一步测试,这个问题似乎影响了我的实体组中的所有子实体。所有这些不同实例的根父类都是用户类,这是我自己创建的,而不是内置的用户类。从子类的构造函数中删除parent=user之后,get_by_key_名称按预期工作。但是,如果可能的话,我希望能够将实体组功能与定义的键一起使用 -- 你好 我试图在我的GAE项目中使用已定义的键名进行更快的查询 然而,我遇到了一个奇怪的问题,我无法获取它们的密钥。此代码似乎不起作用: for l in Logins.all().fetch():

更新:经过进一步测试,这个问题似乎影响了我的实体组中的所有子实体。所有这些不同实例的根父类都是用户类,这是我自己创建的,而不是内置的用户类。从子类的构造函数中删除parent=user之后,get_by_key_名称按预期工作。但是,如果可能的话,我希望能够将实体组功能与定义的键一起使用

-- 你好 我试图在我的GAE项目中使用已定义的键名进行更快的查询

然而,我遇到了一个奇怪的问题,我无法获取它们的密钥。此代码似乎不起作用:

for l in Logins.all().fetch():
    print Login.get_by_key_name(l.key().name())
一些注意事项:

  • 我只在SDK中进行了测试
  • l、 key().name()返回在数据存储中查找时与实体一起列出的键名称字符串。我可以复制并粘贴数据故事中的字符串,并将其用作参数,以通过_key_name()获取_,但这也不起作用

  • 登录类的键名都以“l”(即小写的“l”)作为前缀,其他方面都是小写的,可能包含下划线或破折号,但不超过500字节

  • 其他种类的像这样的工作

  • 键是登录类型的两个属性的插值,我可以使用常规的.filter()方法很好地获取对象
  • 实例的“父”是一个用户类。(如果这与我取回的方式有关,请提及)

所以我不得不问,有没有什么明显的原因可以解释为什么这样做行不通?使用SDK进行密钥名称搜索是否存在任何已知问题?

您的第二条评论是正确的,您好。父/子关系类似于文件系统中的目录或文件夹结构。您的密钥(概念上)是
/parents/[parent\u keyname]/logins/[login\u keyname]
。因此,如果您试图获取
/logins/[login\u keyname]
,您将无法获取您的实体。(没有规则规定所有
登录
s都必须是
父项
s的子项;每次都必须告诉'get_by_key_name()。)


在我自己的代码中,我最终使用
Key.from_path()
构建了我的密钥。我使用类方法,例如,
Login.key\u表示\u名称(一些\u父项,一些\u名称)
以及
Login.get\u by\u key\u名称\u表示\u父项(一些\u父项,一些\u名称)
(好吧,我的方法名较短,但只是说得很清楚。那么至少我不可能生成具有错误父/子关系的密钥。

我想这是一个已知的问题。但是,很难判断这是否仅仅是SDK的问题,或者它是否也会影响生产?附带说明,如果我将父参数添加到get_by_key_name(key_name,parent)也很好用。它应该是这样工作的吗?谢谢你的回答。我昨天终于发现了这个问题。我对为什么在
Child.get_by_key_name()中需要家长的逻辑感到困惑
。但是,正如您所说,父项的密钥在某种程度上是子项密钥的一部分,因此您需要了解父项以构建子项密钥。到目前为止,这非常有效,除了子实体内容的永久链接。我可能不得不在这方面受到性能影响。