2

何らかの理由でブールデータをGoogleAppsデータストアに保存しようとすると、常にfalseとして保存されます。

私のエンティティ定義は次のようになります。

type Link struct {
  Name          string    //Coloquial label for link. Set by original User.
  ...
  isOpen        bool      //Tells us whether anyone can rewrite the link. Set by original User.
  isPerminant   bool      //Tells us whether link should be saved forever.
  isFlagged     bool      //Tells us whether the content has ever been flagged inappropriate.
}

オブジェクトを作成し、次のように値を割り当てます。

//Create Link from form data
l   := Link{
  Name:         r.FormValue("name"),
  ...
  isOpen:       r.FormValue("open")=="on",        
  isPerminant:  r.FormValue("perminant")=="on",
  isFlagged:    r.FormValue("flagged")=="on",
}

次のコマンドを実行してデータを確認します。

//Put the Link in the datastore
lKey, err := datastore.Put(c, datastore.NewIncompleteKey(c, "Link", nil), &l)
if err != nil {
  http.Error(w, err.Error(), http.StatusInternalServerError)
  return
}

var newLink Link
if err = datastore.Get(c, lKey, &newLink); err != nil {
  http.Error(w, err.Error(), http.StatusInternalServerError)
  return
}

newLink output value: {[name] ... false false false}

is [...]プロパティの1つに真の値をハードコーディングしても、それらはすべてfalseのままです。WHHHHHHYYYY ???

4

2 に答える 2

8

で大文字にIしてみてくださいIs

type Link struct {
    Name        string //Coloquial label for link. Set by original User.
    IsOpen      bool   //Tells us whether anyone can rewrite the link. Set by original User.
    IsPerminant bool   //Tells us whether link should be saved forever.
    IsFlagged   bool   //Tells us whether the content has ever been flagged inappropriate.
}

//Create Link from form data
l := Link{
    Name:        r.FormValue("name"),
    IsOpen:      r.FormValue("open") == "on",
    IsPerminant: r.FormValue("perminant") == "on",
    IsFlagged:   r.FormValue("flagged") == "on",
}

フィールドをデータストアに保存するには、フィールドをエクスポートする必要があります。つまり、大文字で始まります。詳細については、EffectiveGoの「名前」セクションをお読みください。

于 2012-07-25T01:49:54.373 に答える
0

オブジェクトをハードコーディングした後にputメソッドを使用していますか?安全のために、行った変更の後にputが続くことを確認してください。

于 2012-07-24T22:08:11.947 に答える