【发布时间】:2012-02-14 09:53:11
【问题描述】:
我将实体(作为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?
【问题讨论】:
-
顺便说一句,我正在执行与此文件中的代码完全相同的操作:hyk-proxy.googlecode.com/svn-history/r256/trunk/v2/gae/src/go/… - 特别是
GetAllGroups方法,它们以相同的方式加载许多项目。
标签: google-app-engine go datastore