2013-05-22 71 views
1

我正在嘗試使用GAE學習。 我創建了2個處理程序。一個用於將對象保存到數據存儲區,另一個用於檢索並輸出到屏幕。問題是,當我從數據存儲檢索UserAccount對象時,對象內的每個值都消失了。與GAE一起將一個對象保存到數據存儲區。當它恢復時,對象有空成員

任何幫助將不勝感激。

輸出:

a/c count: 2 val: core.UserAccount{idString:"", deviceId:""} val: core.UserAccount{idString:"", deviceId:""}

type UserAccount struct { 
    idString string 
    deviceId string 
} 

func create_account(w http.ResponseWriter, r *http.Request) { 

    c := appengine.NewContext(r) 

     idstr := "ABCDEFGH" 
     devId := r.FormValue("deviceId") 

     newAccount := UserAccount{ idString: idstr, deviceId: devId,} 

     key := datastore.NewIncompleteKey(c, "UserAccount", nil) 
     _, err := datastore.Put(c, key, &newAccount) 
     if err != nil { 
      http.Error(w, err.Error(), http.StatusInternalServerError) 
      return 
    } 

    fmt.Fprintf(w, "val: %#v \n", newAccount) 
} 

func get_info(w http.ResponseWriter, r *http.Request) { 
    c := appengine.NewContext(r) 

    q := datastore.NewQuery("UserAccount") 
    accounts := make([]UserAccount, 0, 10) 
    if _, err := q.GetAll(c, &accounts); err != nil { 
     http.Error(w, err.Error(), http.StatusInternalServerError) 
     return 
    } 

    fmt.Fprintf(w, "a/c count: %v \n", len(accounts)) 

    for i := 0; i < len(accounts); i++ { 
     fmt.Fprintf(w, "val: %#v \n", accounts[i]) 
    } 
} 

回答

5

如果數據存儲API使用反射,這我相信它,它無法訪問未出口結構域,不以開頭即字段名大寫字母

導出它們,它應該工作。

+1

謝謝,它的工作原理。我剛剛瞭解到var name以大寫字母開頭會將變量標記爲導出的值。 XD – Nick

+0

謝謝!希望他們在教程中提到過! – Timmmm

相關問題