如何使用其祖先未知的密钥查询实体?

时间:2016-08-22 06:34:07

标签: google-app-engine go

AB

的祖先
type A struct {}
type B struct {}

无论祖先如何,我如何搜索其字符串ID为B的{​​{1}}? (B和祖先A甚至可能不存在)

stringID

2 个答案:

答案 0 :(得分:2)

祖先实体可能不存在,但必须知道其ID或名称。否则,您将无法为子实体创建唯一键。请注意,A的孩子和B的孩子可能具有相同的ID或名称。

另请注意,您可以删除一个实体并创建一个新实体,但一旦创建了实体,您就无法更改它。

答案 1 :(得分:1)

如果没有实际创建a实体,您可以create a key a {实体仅在您致电datastore.Put()时创建)。然后,您可以使用该密钥创建b(或者仅仅是您的密钥,如果您愿意的话)。

对于查询方面:您可以为B类型的所有实体执行keys-only query,然后针对每个键检查键的stringID是否与您想要的stringID匹配。您可以获得多个结果 - 对于具有不同祖先的实体 - stringID对于相同的祖先(或根本没有祖先)是唯一的