首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NamespaceManager与key查询在对象化中的协同工作

NamespaceManager与key查询在对象化中的协同工作
EN

Stack Overflow用户
提问于 2016-11-14 06:01:26
回答 1查看 135关注 0票数 0

我在我的数据存储中有两个组织在他们自己的名称空间中。让我们说organisation1存在于namespace1中,organisation2存在于namespace2中。我正在通过它的网络安全密钥检索组织。让我们说organisation1的网络安全密钥是orgWebSafeKey1,organisation2的网络安全密钥是orgWebSafeKey2.我正在使用以下代码来获得一个组织:

代码语言:javascript
复制
NamespaceManager.set("namespace1");
Organisation organisation = (Organisation) ofy().load().key(Key.create(orgWebSafeKey1)).now();

上面的代码如我所预期的那样工作,因为organisation1存在于namespace1中,我正在尝试将该组织置于其命名空间中。

但是,如果我只是更改了组织的网络安全密钥,那么按照我的预期,下面的查询应该会导致“空”组织,因为namespace1中没有密钥的组织。但实际上它给了我organisation2。

代码语言:javascript
复制
NamespaceManager.set("namespace1");
Organisation organisation = (Organisation) ofy().load().key(Key.create(orgWebSafeKey2)).now();

如果根据objectify和数据存储,上面的查询结果是正确的和预期的,那么我可以假设按键进行的查询是全局的,跨所有的命名空间吗?我还想确认在本例中Key.create(orgWebSafeKey2)不会更改密钥的命名空间吗?查询是根据键的名称空间运行的,而不是由NamespaceManager.set("namespace1")运行的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-15 02:24:41

Datastore密钥包含以下组件:

  1. 项目/应用程序ID
  2. 命名空间
  3. 实体路径(祖先类型+ID/名称(0或更多),最终实体类型+ID/名称)

因为名称空间是键的一部分,所以按键查找实体总是找到正确的实体,而不管NamespaceManager设置的名称空间如何。换句话说,键是一个GUID,它唯一地标识了所有应用程序/项目中的一个实体。

有关您的问题的更多细节/答案,请参阅下面的链接:

Datastore

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40582703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档