问题:
如何在 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中文网其他相关文章!