2016-05-20 8 views
1

ここには、私が読もうとしているエンティティのスクリーンショットがあります。私は次のような結果を得るGoogleからのデータの読み込みAppEngineのGoDocoreでのデータの読み込み

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!") 
} 

:ここ

Entities

は私の行くコードです データストア: "readpeople.person" にフィールド "firstNameの" をロードできません:そのような構造体のフィールド

ここにスクリーンショットがあります。 result

このコードでは、このデータは何も表示されません。この投稿を検索に限定したいと思っていました。私は単純なものを逃しているに違いない。どこが間違っていたのですか?助けを前にありがとう。

答えて

0

データストア内のプロパティ名がGo構造体のフィールド名と一致しませんperson。たとえば、データストアpersonにはプロパティfirstNameがありますが、構造体にはフィールドfirstnameがあります。

まず最初に、それらを一致させることです。 Go構造体に異なる名前を使用する場合は、struct tagsを使用してマッピングを定義します。

もう1つ重要なこと:タイプとそのフィールドをエクスポートして、datastoreパッケージがリフレクションを使用してデータをロードできるようにする必要があります。だから型名とそのフィールドを大文字で始める必要があります:

type Person struct { 
    FirstName string `datastore:"firstName"` 
    LastName string `datastore:"lastName"` 
} 
+0

これは私が必要としていたものです。私はこの変更を行い、それは完全に働いた。ありがとうございました! – wdwinslow

+0

このコードをクリーンアップし、データを書き戻してデータを表示するコードを追加しました。サンプルアプリケーションとしてGitHubにifのすべてをアップロードしました。おそらくこれは将来の誰かにとって役に立ちます。 [link](https://github.com/wdwinslow/go-appengine-cloud-datastore) – wdwinslow

関連する問題