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

Geting entities by id/key without specifying the ancestor key

我使用 go with App Engine 和数据存储。我有餐厅和业主实体。 所有者餐厅 的父级。我在主页上显示餐厅列表。当访问者点击餐厅时,资料页面 (www.../restaurants/:id) 将打开。那时我没有祖先钥匙。我应该如何检索餐厅?我可以使用 /restaurants/:key 但 datastore.key 是一个很长的字符串。 这样做的自然方式是什么?我应该使用独特的餐厅名称并 query/filter 吗?

您可以保留当前的数据模型(餐厅所有者的子实体)。您只需将 "Owner" 变量添加到餐厅即可。

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

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

当您需要 get/save 餐厅实体时,您可以使用其自己的标识符和使用所有者 ID 创建的父密钥来创建其完整密钥。