在Datastore(golang)中对50.000+行进行分页的正确方法?

时间:2017-03-10 17:57:49

标签: google-app-engine go google-cloud-datastore google-compute-engine

我的情况是我的查询返回了很多(可能超过50.000+)结果,但是对于每个页面我只想显示50个结果,然后可以单击下一个/上一个按钮..

我在想这可以通过这种方式实现:

querySize := 50
total, err := db.client.Count(ctx, query) 
numPages := (total % querySize)
if numPages > curPage {
    return nil, errors.New("out of range")
}
offset := querySize * curPage
query = query.Offset(offset).Limit(querySize)
var app []AppStoreApp
if _, err := db.client.GetAll(ctx, query, &app); err != nil {
    return nil, err
}
return &app, nil

但这是否有效,是否有更好的方法呢?

此外,检查是否应启用上一个按钮很简单,因为您可以说if curPage > 1然后应该启用它...但是如何检查是否应启用下一个按钮?也许通过将querySize设置为51,然后仅使用50个结果?

非常感谢任何帮助/建议:)

0 个答案:

没有答案