是否可以获取查询结果的祖先键? 根据数据存储区文档(https://cloud.google.com/appengine/docs/go/datastore/reference#Query.Run),query.Run()结果仅具有Cursor()和Next()函数, 两者都不会导致您成为祖先。 似乎这应该是范围内的信息,除非数据存储区的机制阻止了它。 是否由开发人员将祖先写入子对象的属性(具有匹配的种类)中(如果我们愿意承担费用)?


如果查询返回结果,则祖先包含在实体Key中。

实体键由Iterator.Next()返回,例如:

通过键,使用Key.Parent()方法获取祖先。

请参阅以下示例:

请注意,祖先存储在datastore.Query中,但不会导出:

Query.Run()返回的datastore.Iterator包含Query,但也未导出:

因此,您无法访问这些struct字段,最好的选择是结果中的实际实体(或其键)。