使用 Run 方法和 Query 值遍历查询结果时,Datastore 会对结果进行批量检索。默认情况下,每批包含 20 个结果。您可以持续遍历查询结果,直到返回所有结果或者请求超时。
如需遍历与查询匹配的每个实体,请使用 Run 方法获取 Iterator;借助 Iterator 的 Next 方法,可以对每个实体进行逐个检索。
q:=datastore.NewQuery("Person")t:=q.Run(ctx)for{varpPersonk,err:=t.Next(&p)iferr==datastore.Done{break// No further entities match the query.}iferr!=nil{log.Errorf(ctx,"fetching next Person: %v",err)break}// Do something with Person p and Key kdoSomething(k,p)}
q:=datastore.NewQuery("Person")varpeople[]Personkeys,err:=q.GetAll(ctx,&people)iferr!=nil{log.Errorf(ctx,"fetching people: %v",err)return}fori,p:=rangepeople{k:=keys[i]// Do something with Person p and Key kdoSomething(k,p)}