从 Google Could Datastore on AppEngine with Go 读取数据
Reading data from Google Could Datastore on AppEngine with Go
这是我尝试读取的实体的屏幕截图。
这是我的代码:
package readfromgcd
import (
"net/http"
"appengine"
"appengine/datastore"
"fmt"
)
type person struct {
firstname string
lastname string
}
func init () {
http.HandleFunc("/", readpeople)
}
func readpeople (w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
q := datastore.NewQuery("person")
people := make([]person, 0, 20)
if _, err := q.GetAll(c, &people); err !=nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
fmt.Fprint(w, "Hello world!")
}
我得到以下结果:
数据存储:无法将字段 "firstName" 加载到 "readpeople.person" 中:没有这样的结构字段
这是截图。
result
此代码未显示对此数据执行任何操作。我想将此 post 限制为检索。我一定错过了一些简单的东西。我哪里出错了?在此先感谢您的帮助。
属性 数据存储中的名称与 Go 结构中的字段名称不匹配 person
。例如,在你的数据存储中 person
有 属性 firstName
但你的结构有字段 firstname
.
所以首先要做的就是让它们匹配;或者,如果您想在 Go 结构中使用不同的名称,请使用 struct tags 来定义映射。
另一件重要的事情:您必须按顺序导出您的类型及其字段,以便 datastore
包能够使用反射将数据加载到其中。所以你必须以大写字母开始你的类型名称及其字段:
type Person struct {
FirstName string `datastore:"firstName"`
LastName string `datastore:"lastName"`
}
这是我尝试读取的实体的屏幕截图。
这是我的代码:
package readfromgcd
import (
"net/http"
"appengine"
"appengine/datastore"
"fmt"
)
type person struct {
firstname string
lastname string
}
func init () {
http.HandleFunc("/", readpeople)
}
func readpeople (w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
q := datastore.NewQuery("person")
people := make([]person, 0, 20)
if _, err := q.GetAll(c, &people); err !=nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
fmt.Fprint(w, "Hello world!")
}
我得到以下结果: 数据存储:无法将字段 "firstName" 加载到 "readpeople.person" 中:没有这样的结构字段
这是截图。 result
此代码未显示对此数据执行任何操作。我想将此 post 限制为检索。我一定错过了一些简单的东西。我哪里出错了?在此先感谢您的帮助。
属性 数据存储中的名称与 Go 结构中的字段名称不匹配 person
。例如,在你的数据存储中 person
有 属性 firstName
但你的结构有字段 firstname
.
所以首先要做的就是让它们匹配;或者,如果您想在 Go 结构中使用不同的名称,请使用 struct tags 来定义映射。
另一件重要的事情:您必须按顺序导出您的类型及其字段,以便 datastore
包能够使用反射将数据加载到其中。所以你必须以大写字母开始你的类型名称及其字段:
type Person struct {
FirstName string `datastore:"firstName"`
LastName string `datastore:"lastName"`
}