最初在 Python 中创建时,如何在 Go 中使用数据存储 GAE?
How to use datastore GAE in Go when initially it was created in Python?
我有一个数据存储类型 "Items"
,它是在 Python 中创建的,在此代码中不要在 Go 中迭代数据 q.Run()
(它是版本 2):
type Items struct{
code string
date time.Time
name string
}
func getcode(w http.ResponseWriter, r *http.Request) {
code := mux.Vars(r)["code"]
fmt.Fprintf(w,"get code %v",code)
c := appengine.NewContext(r)
q := datastore.NewQuery("Items")
for t := q.Run(c); ; {
var x Items
key, err := t.Next(&x)
fmt.Fprintf(w,"%v",key)
if err == datastore.Done {
break
}
if err != nil {
//serveError(c, w, err)
return
}
fmt.Fprintf(w, "Code=%v\n", x.code)
}
数据存储包在从数据存储读取实体时使用反射来填充结构字段。在 Go 中,名称以小写字母开头的结构字段不会被导出。未导出的字段不能从定义它们的包以外的包中设置。
只有导出的字段(以大写字母开头)可以存储在数据存储中/从数据存储中检索。您可以使用标签来判断 属性 在数据存储中的名称,以防它与字段名称不同。因此,您必须将 Items
结构更改为:
type Items struct {
Code string `datastore:"code"`
Date time.Time `datastore:"date"`
Name string `datastore:"name"`
}
我有一个数据存储类型 "Items"
,它是在 Python 中创建的,在此代码中不要在 Go 中迭代数据 q.Run()
(它是版本 2):
type Items struct{
code string
date time.Time
name string
}
func getcode(w http.ResponseWriter, r *http.Request) {
code := mux.Vars(r)["code"]
fmt.Fprintf(w,"get code %v",code)
c := appengine.NewContext(r)
q := datastore.NewQuery("Items")
for t := q.Run(c); ; {
var x Items
key, err := t.Next(&x)
fmt.Fprintf(w,"%v",key)
if err == datastore.Done {
break
}
if err != nil {
//serveError(c, w, err)
return
}
fmt.Fprintf(w, "Code=%v\n", x.code)
}
数据存储包在从数据存储读取实体时使用反射来填充结构字段。在 Go 中,名称以小写字母开头的结构字段不会被导出。未导出的字段不能从定义它们的包以外的包中设置。
只有导出的字段(以大写字母开头)可以存储在数据存储中/从数据存储中检索。您可以使用标签来判断 属性 在数据存储中的名称,以防它与字段名称不同。因此,您必须将 Items
结构更改为:
type Items struct {
Code string `datastore:"code"`
Date time.Time `datastore:"date"`
Name string `datastore:"name"`
}