通过id / key获取实体而不指定祖先密钥

时间:2016-01-01 00:18:11

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

我使用app引擎和数据存储区。我有餐馆和业主实体。 所有者餐厅的父母。我在主网页上显示餐馆列表。当访问者点击餐馆时,将打开个人资料页面(www ... / restaurants /:id)。那时我没有祖先的钥匙。我应该如何找回餐厅?我可以使用/ restaurants /:key但是datastore.key是很长的字符串。 这样做的自然方式是什么?我应该使用独特的餐馆名称和查询/过滤吗?

1 个答案:

答案 0 :(得分:1)

您可以保留当前的数据模型(餐馆所有者的子实体)。您所需要的只是添加"所有者"变成餐馆。

当您检索餐馆实体时,您可以从其密钥中提取所有者ID - 每个密钥都已包含父密钥(如果有)。在Java中它看起来像这样:

restaurant.setOwner(entity.getParent().getId());

当您需要获取/保存餐馆实体时,您可以使用自己的标识符和使用所有者ID创建的父密钥创建其完整密钥。