使用 Go 从 Google 读取数据可以在 AppEngine 上进行数据存储

这是我正在尝试阅读的实体的屏幕截图。

http://img.mukewang.com/61dbfded0001906905150301.jpg

这是我的代码:


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”中:没有这样的结构字段


这是一个屏幕截图。 结果


此代码未显示对这些数据执行任何操作。我想把这篇文章限制在检索范围内。我一定错过了一些简单的东西。我哪里出错了?提前感谢您的帮助。


慕桂英3389331
浏览 106回答 1
1回答

aluckdog

数据存储中的属性名称与 Go 结构中的字段名称不匹配person。例如,在您的数据存储中person有属性,firstName但您的结构有字段firstname。所以首先要做的是让它们匹配;或者,如果您想在 Go 结构中使用不同的名称,请使用结构标签来定义映射。另一件重要的事情:您必须按顺序导出类型及其字段,以便datastore包能够使用反射将数据加载到其中。因此,您必须以大写字母开头类型名称及其字段:type Person struct {    FirstName string `datastore:"firstName"`    LastName string  `datastore:"lastName"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go