問題:
如何在Google App Engine 中使用嵌入套結構(GAE) 使用Go 時的資料儲存?
答案:
Go 中的資料儲存 API 不直接支援巢狀結構。不過,解決方案是利用 API 提供的 PropertyLoadSaver 介面。
實作:
範例:
<code class="go">type Post struct { Field1 string Field2 string User User } type User struct { UserField1 string UserField2 string } func (p Post) Load(ps []Property) error { for _, prop := range ps { switch prop.Name { case "Field1": p.Field1 = prop.Value.(string) case "Field2": p.Field2 = prop.Value.(string) case "User": if err := prop.Load(&p.User); err != nil { return err } } } return nil } func (p Post) Save() ([]Property, error) { props := []Property{ {Name: "Field1", Value: p.Field1}, {Name: "Field2", Value: p.Field2}, } pLoad, err := appengine.Datastore().SaveStruct(p.User) if err != nil { return nil, err } props = append(props, pLoad...) return props, nil } // Usage key := datastore.NewKey("Post", "someID", nil) _, err := datastore.Put(ctx, key, &post)</code>
此實作允許您以結構化方式儲存和擷取巢狀結構,同時仍受益於Datastore 的過濾和查詢功能。
以上是如何使用 Go 處理 Google App Engine (GAE) 資料儲存區中的巢狀結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!