有没有办法通过游标循环数据存储结果,直到没有结果?
我需要拉出每条记录并迭代它。但它就像400万条记录。所以我想以1000块开始工作。
我知道下面的内容不起作用。但这只是为了展示我希望的那种逻辑。
q := datastore.NewQuery("Foo").Limit(1000)
while t, err := models.Client.GetAll(models.Ctx, q, &results) {
...
myCursor, err := t.Cursor()
q.Start(cursor)
}
编辑:这是我发现如何做到这一点的唯一方法。我确信有更优雅的方式。
limit := 1000
offset := 0
resultCount := 1
for resultCount > 0 {
q := datastore.NewQuery("Foo").Limit(limit).Offset(offset)
_, err := client.GetAll(ctx, q, &foo)
checkErr(err)
resultCount = len(foo)
processPaths(foo)
offset += resultCount
}
它实际上并没有使用光标。