我目前正在研究在Google App Engine上运行的基于golang http的处理程序。
作为其中的一部分,我试图通过Projection查询来查看我感兴趣的所有值,查看给定类型的多个字段,目的是存储每个实体的负载在镜像字段类型的结构中。
这是我的疑问:
source := datastore.NewQuery("CacheEntry").Project("Campaign", "Creative", "Impressions", "Operator", "Publisher", "Slot").Limit(50)
不幸的是,我从这里得到的只是空字符串(更糟糕的是,返回空字符串不会引发任何类型的错误,所以我只是觉得它正在做这个)。
Google的文档和错误报告在数据存储方面非常糟糕,所以它没有太多帮助。我可以在Google云端控制台中看到我的数据存储区查看器中的填充字段 - 某些字段实际上是空的,但我应该至少返回一些数据。
我在for循环中使用适当的指针设置运行它:
for t := source.Run(ctx); ; {
_, err := t.Next(&x)
log.Println(count)
if err == datastore.Done {
log.Println("failed on Datastore:done, count \n")
log.Println(count)
break
}
if err != nil {
log.Println("failed on \n")
log.Println(count)
http.Error(w, err.Error(), http.StatusInternalServerError)
break
}
// fmt.Fprint(w, x.Campaign)
if &x != nil {
fmt.Fprintln(w, "Strings:\n")
fmt.Fprintln(w, x.Operator)
if x.Operator == "" {
fmt.Fprintln(w, "Campaign string is empty")
}
}
count = count + 1
' X'是:
type Row struct {
Campaign string
Creative string
Impressions int
Operator string
Publisher string
Slot string
}
我出错的任何想法?
答案 0 :(得分:1)
想出来,结果发现了一些在后台发生的问题:
.Limit(50)
添加过滤器修复了数据存储严重需要比其拥有更好的反馈措施。与我曾经使用过的很多类似的dbs相比,它的反馈意见微乎其微。