使谷歌的App Engine數據存儲的關鍵,我傳遞一個實體「ID」爲串中的URL,例如:從字符串
..../foo/234565
我想使用的ID在下面的查詢:
//...i hace some code that gets stringId from the URL, and I verified that it works
stringId = ....
theKey, err := datastore.DecodeKey(stringId)
q := datastore.NewQuery("Foo").Filter("__key__ =", theKey)
我得到的錯誤:
proto: can't skip unknown wire type 7 for datastore.Reference
是否有轉換的StringID簡單的方式變成了 「鑰匙」?
方面評論:數據存儲查詢看起來很奇怪:你可以在一個鍵上使用'datastore.Get()'。 – dyoo 2014-10-27 18:38:27
ID是從哪裏來的?它是否來自https://cloud.google.com/appengine/docs/go/datastore/reference#Key.Encode? – dyoo 2014-10-27 18:39:41
要非常清楚:'datastore.DecodeKey()'只適用於'Key.Encode()'生成的值。從您向我們展示給我們的內容看來,您剛剛插入了包含實體名稱,斜槓和ID的字符串值,希望它能夠解碼。但根據文檔,它不應該是這樣的:'datastore.DecodeKey()'需要一個專用於'Key.Encode()'的專用序列化格式。 – dyoo 2014-10-27 18:53:30