这是我的结构:
type AreaPrerequisite struct {
SideQuestId int //
SideQuestProg int // progress
}
type AreaInfo struct {
Id int `datastore:""`
Name string `datastore:",noindex"`
ActionPoint int `datastore:",noindex"`
Prerequisite AreaPrerequisite `datastore:",noindex"`
// ignored:
DsMonsters []byte `datastore:"-"`
DsStages []byte `datastore:"-"`
Monsters AreaMonsters `datastore:"-"`
Stages []*StageEntry `datastore:"-"`
}
和我的put()调用:
key := datastore.NewKey(c, "Area", "", int64(pArea.Id), nil)
_, err := datastore.Put(c, key, *pArea)
if err != nil {
return err
}
尝试放入DS时出现以下错误:
datastore: invalid entity type
我检查了文档: https://developers.google.com/appengine/docs/go/datastore/reference
数据存储区:“ - ”应标记数据存储区忽略的某些不受支持的字段。 不知道为什么会失败。
答案 0 :(得分:16)
我发现我不小心将*添加到pArea作为arg to put()所以它传递一个值而不是指针,导致无效的实体类型错误。
答案 1 :(得分:4)
我也遇到了同样的问题,在我的情况下,我并没有将&
放在要投入的实体之前。
key := datastore.NewKey(c, "Area", "", int64(pArea.Id), nil)
_, err := datastore.Put(c, key, &pArea)
if err != nil {
return err
}
请注意&pArea