9

ここに私の構造体があります:

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

datastore:"-" は、データストアによって無視されるサポートされていないフィールドをマークする必要があります。失敗する理由がわからない。

4

2 に答える 2

16

誤って * を pArea に arg として put() に追加したため、ポインターではなく値が渡され、無効なエンティティ タイプ エラーが発生していることがわかりました。

于 2013-08-17T04:30:02.833 に答える
4

私も同じ問題に遭遇しました。私の場合、配置&するエンティティの前に配置しませんでした。

key := datastore.NewKey(c, "Area", "", int64(pArea.Id), nil)
_, err := datastore.Put(c, key, &pArea)
if err != nil {
    return err
}

&の前に注意してください&pArea

于 2015-10-05T07:16:54.153 に答える