gpt4 book ai didi

google-app-engine - 将许多 PropertyList 放入 Google App Engine 数据存储区(在 Go 中)并使用 Query.GetAll 再次加载它们

转载 作者:IT王子 更新时间:2023-10-29 00:39:58 27 4
gpt4 key购买 nike

我将实体(作为 datastore.PropertyList)放入数据存储区,如下所示:

// save one
var plist datastore.PropertyList = make(datastore.PropertyList, 3)
plist = append(plist, datastore.Property { "name", "Mat", false, false })
plist = append(plist, datastore.Property { "age", "29", false, false })
plist = append(plist, datastore.Property { "location", "London", false, false })
key := datastore.NewIncompleteKey(context, "Record", nil)
datastore.Put(context, key, &plist)

// save another one
var plist datastore.PropertyList = make(datastore.PropertyList, 3)
plist = append(plist, datastore.Property { "name", "Laurie", false, false })
plist = append(plist, datastore.Property { "age", "27", false, false })
plist = append(plist, datastore.Property { "location", "London", false, false })
key := datastore.NewIncompleteKey(context, "Record", nil)
datastore.Put(context, key, &plist)

一切正常(尽管上面的代码现在更像是伪代码)。我能够单独加载它们,并且 datastore.PropertyList 将每个字段作为它自己的 datastore.Property 出来。

但是,当我尝试使用 Query 检索它们中的许多时,它失败了:

query := datastore.NewQuery("Record")

plists := make(datastore.PropertyList, 0, 10)
keys, err := query.GetAll(context, &plists)

我收到以下错误:

datastore: cannot load field "age" into a "datastore.Property": no such struct field

它似乎没有提示 Name 因为它恰好是 datastore.Property 的有效属性,所以我如何让它加载项目按照预期,plists 中的每个项目都是 datastore.PropertyList 而不是 datastore.Property?

最佳答案

我更改了实现以使用 PropertyLoadSaver 接口(interface) - 您可以看到它在我们新的数据存储 Active Record 样式包装器中很好地工作:http://github.com/matryer/gae-records (参见 record.go 类型的 LoadSave 方法)

关于google-app-engine - 将许多 PropertyList 放入 Google App Engine 数据存储区(在 Go 中)并使用 Query.GetAll 再次加载它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931134/

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