gpt4 book ai didi

google-app-engine - GO中GAE通过int Id获取实体

转载 作者:IT王子 更新时间:2023-10-29 02:17:22 27 4
gpt4 key购买 nike

我正在尝试通过其 int Id 获取实体 key 。 (不是实体本身,但它是关键)(从长远来看,我这样做是为了找到实体父)

Data from DatastoreViewer:

Entity Kind
File
Entity Key
ag9kZXZ-dHJhc2hib3hhcHByIgsSBEZpbGUYgICAgICAwAoMCxIERmlsZRiAgICAgIDACww
ID
6473924464345088
Parent
ag9kZXZ-dHJhc2hib3hhcHByEQsSBEZpbGUYgICAgICAwAoM
File: id=5910974510923776

我是这样做的:

k := datastore.NewKey(c, "File", "", 6473924464345088, nil)
currentDirQuery := datastore.NewQuery("File").Filter("__key__ =", k).KeysOnly()
keys, err := currentDirQuery.GetAll(c, nil)

keys 的长度为 0。我做错了什么?

最佳答案

如果您已经有了 key ,为什么只执行与 key 匹配的 key 查询?你为什么不只用 key 做一个 datastore.Get() 呢?

至于为什么你的 keys_only 查询不起作用,你没有在你构造的键中包括祖先,你的例子中的键有一个你展示的父 ag9kZXZ-dHJhc2hib3hhcHByEQsSBEZpbGUYgICAgICAwAoM 这个 urlsafe 版本如果要指定祖先,则 key 必须有父项。

使用 python 我们可以解码这个 key

> ndb.Key(urlsafe="ag9kZXZ-dHJhc2hib3hhcHByIgsSBEZpbGUYgICAgICAwAoMCxIERmlsZRiAgICAgIDACww")
Key('File', 5910974510923776, 'File', 6473924464345088, app='dev~trashboxapp')

看到父Key是Key('File', 5910974510923776)

您不能使用为查询创建的键对子项执行部分匹配。您只能执行祖先查询,这将返回祖先及其所有子级,而不管层次结构的深度如何。

这也意味着 datastore.Get() 将因您在示例代码中创建的 key 而失败。

因此构建您的 key ,使其包含祖先 - 请参阅文档 https://developers.google.com/appengine/docs/go/datastore/entities#Go_Retrieving_an_entity

但老实说,你正在做的事情是完全多余的,除非它只是一个理解正在发生的事情以及你试图往返一个键 -> 查询 -> 键的练习

关于google-app-engine - GO中GAE通过int Id获取实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23125866/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com