我目前正在从数据存储中请求 20 个条目,使用游标将这些条目返回给用户,如果用户要求更多条目,请使用游标作为新的开始并请求接下来的 20 个条目。
代码看起来像
q := datastore.NewQuery("Item").
Limit(limit)
if cursor, err := datastore.DecodeCursor(cursor); err == nil {
q = q.Start(cursor)
}
var is []Item
t := q.Run(c)
for {
var i Item
_, err := t.Next(&i)
if err == datastore.Done {
break
}
is = append(is, i)
}
如果重要的是这里是完整的代码:https : //github.com/koffeinsource/kaffeeshare/blob/master/data/appengine.go#L23
使用带有 的循环看起来是一种反模式append,但是在使用GetMulti/GetAll时我没有看到获取光标的方法,或者我是否遗漏了什么?
我确实希望在用户查询数据存储时添加数据,因此偏移量可能会产生重复的结果。在这种情况下,我应该关心批处理吗?
相关分类