Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 按id获取实体_Google App Engine_Go - Fatal编程技术网

Google app engine 按id获取实体

Google app engine 按id获取实体,google-app-engine,go,Google App Engine,Go,我正在使用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) 在这里,我被卡住了,我尝试使用过滤器,但它不起作用 下一步我必须做什么?您不能说是否对实

我正在使用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)
在这里,我被卡住了,我尝试使用过滤器,但它不起作用


下一步我必须做什么?

您不能说是否对实体使用整数或字符串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
 }

查询实体比查询实体更有效。如果您确实希望按id进行查询,请参阅应用程序引擎文档中的。

您没有说明是否使用整数或字符串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
 }

查询实体比查询实体更有效。如果您确实希望按id进行查询,请参阅App Engine文档中的。

如果您有id,则无需使用查询。一种更快、更便宜的方法是创建一个键并直接从数据存储中检索该实体


如果您有id,则不需要使用查询。一种更快、更便宜的方法是创建一个键并直接从数据存储中检索该实体


key:=datastore.NewKey(c,“Item”,“”,n,defaultItemList(c))
我使用了这个,但是我得到了datastore:
无效的实体类型
传递给
datastore.get的指针值是多少?您没有生成足够的源代码,无法让其他人确认您没有犯中提到的错误。ErrInvalidIdentityType记录在中,因此您的代码必须在
数据存储中传递一些意外的目标值。Get
。例如,如果您完成了
项:=[]项{}
,并且您正试图调用
数据存储。Get(c,key,item)
,则肯定会失败:
不是结构指针。您需要执行
item:=item{}
然后执行
datastore.Get(c,key,&item)
应该执行一些有效的操作。
key:=datastore.NewKey(c,item,“”,n,defaultItemList(c))
我使用了它,但是我得到了datastore:
无效的实体类型
传递给
datastore.Get的指针的值是多少?您没有生成足够的源代码,无法让其他人确认您没有犯中提到的错误。ErrInvalidIdentityType记录在中,因此您的代码必须在
数据存储中传递一些意外的目标值。Get
。例如,如果您完成了
项:=[]项{}
,并且您正试图调用
数据存储。Get(c,key,item)
,则肯定会失败:
不是结构指针。您需要执行
item:=item{}
然后执行
datastore.Get(c,key,&item)
应该执行一些有效的操作。您可能会对以前使用SQL之类的数据建模语言的经验感到困惑。数据存储键与SQL主键列不同,因为数据存储键与实体的属性完全不同。查询应该只讨论实体属性。相比之下,SQL主键列仍然是列。如果您有数据存储键,请使用
datastore.Get
datastore.GetMulti
函数。不需要查询。您可能会对以前使用SQL之类的数据建模语言的经验感到困惑。数据存储键与SQL主键列不同,因为数据存储键与实体的属性完全不同。查询应该只讨论实体属性。相比之下,SQL主键列仍然是列。如果您有数据存储键,请使用
datastore.Get
datastore.GetMulti
函数。无需查询。