我正在嘗試查找有關如何使用Go在Appengine數據存儲上執行更新的有效示例。 我在網上找到的所有例子都非常模糊,主要解釋概念,而不是「真實生活」。 去的appengine文檔說:使用Go更新實體Appengine數據存儲
...「更新現有的實體是使用相同的密鑰執行另一個Put()的問題。」
我的問題在於如何檢索密鑰。所以,我有下面的代碼來存儲和檢索數據:
func subscribe(w http.ResponseWriter, r *http.Request) {
user := User {
Name: r.FormValue("username"),
Email: r.FormValue("useremail"),
Flag: 0,
}
c := appengine.NewContext(r)
//datastore.Put(c, datastore.NewIncompleteKey(c, "User", nil), &user)
datastore.Put(c, datastore.NewKey(c, "User", "stringID", 0, nil), &user)
template.Must(template.ParseFiles("confirmation.html")).Execute(w, nil)
}
func checkusers(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
qUsers := datastore.NewQuery("User")
var users []User
qUsers.GetAll(c, &users)
template.Must(template.ParseFiles("users.html")).Execute(w, users)
}
我如何做一個更新的標誌特性改變其值湯姆1?
我對這件事有點困惑,因爲我無法完全理解如何爲每個實體存儲「密鑰」。
任何幫助將不勝感激。
非常感謝您的回覆,但我仍然有點混亂。 「todo你首先需要確定你的對象是新的還是舊的,這可以通過在你的User結構中添加下面的方法來簡單地完成:」。這對我來說並不簡單,你能幫我解決這個問題嗎?我沒有得到我將如何添加一個方法作爲我的結構上的屬性。這個方法總是返回零,所以我不明白在哪種情況下我的對象不會是新的。 –
我將它添加到答案中,創建新用戶時不需要設置標誌值,只需在數據存儲操作後設置標誌值,然後IsNew會告訴您對象是否已在數據存儲區中(您設置標誌)或者如果它不是(標誌值仍爲0) –
有人能夠分享一個工作示例嗎?我也有同樣的問題。我想將一個實體的「Active」屬性設置爲TRUE。 – deepakssn