使用 Query 值的 Run 方法疊代查詢結果時,Cloud 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)}