我用GAE
實驗了一下,但現在我遇到了問題。首先,我在datastore
中儲存了一些東西,其中NewIncompleteKey
。 所以有這個問題。我的網站發送時間戳(我將它們作爲「ID」處理)到後端。我解析然後想從datastore
中刪除它們。 我以爲我可以做到這一點。KeysOnly函數不返回鍵
type Food struct{
Id int64
Course string
Name string
Date string
Price float64
}
...Some Code...
func deleteEntries(mealsID []string, r *http.Request) int{
// Get context from
c := appengine.NewContext(r);
for _,id := range mealsID{
var key *datastore.Key = nil
q := datastore.NewQuery("Meal").Ancestor(mealStoreKey(c)).Filter("Course =", "dessert").KeysOnly()
_, err := q.GetAll(c, key)
if err != nil{
return 0
}
log.Printf("Here the keys: %T %v ", key, key)
log.Printf("%v ", id)
e := datastore.Delete(c, key)
if e != nil{
return 33
}
}
return len(mealsID)
}
但它不起作用,因爲我在datastore.Delete()
函數得到一個錯誤。任何人的想法?
編輯:
第一部分:
keys, err := q.GetAll(c, nil)
…
err = datastore.DeleteMulti(c, keys)
感謝戴夫。
第二部分:
我傳遞了一個String作爲篩選vaule到查詢,但它必須是一個相同的Int64作爲數據存儲。請注意我的自我:您還必須將相同類型的var傳遞給查詢。
func deleteEntries(mealsID []string, r *http.Request) int{
// Get context from
c := appengine.NewContext(r);
for _,id := range mealsID{
ID,_ := strconv.Atoi(id)
q:= datastore.NewQuery("Meal").Ancestor(mealStoreKey(c)).Filter("Id =", ID).KeysOnly()
keys, err := q.GetAll(c, nil)
if err != nil{
return 0
}
log.Printf("ID: %v ", id)
log.Printf("Keys: %v ", keys)
e := datastore.DeleteMulti(c, keys)
if e != nil{
log.Printf("%v ", e)
return 0
}
}
return len(mealsID)
}
什麼是錯誤? – yaccz