我正在使用gorilla mux作为我的路线,我传了一个id。
使用该ID如何从数据存储中获取实体。
param := mux.Vars(r)
c := appengine.NewContext(r)
item := []Item{}
pr, err := datastore.NewQuery("Item").Filter("ID = ", param["id"]).GetAll(c, &item)
在这里我被卡住了,我尝试使用过滤器,但它不起作用。
我接下来要做什么?
答案 0 :(得分:3)
如果您有ID,则不需要使用查询。更快,更便宜的方法是创建密钥并直接从数据存储区检索此实体。
https://cloud.google.com/appengine/docs/go/datastore/entities#Go_Retrieving_an_entity
答案 1 :(得分:2)
如果您对实体使用整数或字符串ID,则不要说。我假设整数,因为它需要更多的代码。首先,创建一个密钥:
n, err := strconv.ParseInt(param["id"], 10, 64)
if err != nil {
// handle error
}
key := datastore.NewKey(c, "Item", "", n, nil)
现在你有了密钥,你可以获取实体:
var item Item
if err := datastore.Get(c, key, &item); err != nil {
// handle error
}
实体get比查询实体更有效。如果您确实想按ID查询,请参阅App Engine文档中的key filters。