func ExampleIterator_Cursor() { ctx := context.Background() client, _ := datastore.NewClient(ctx, "my-proj") cursorStr := "" // [START cursor_paging] const pageSize = 5 query := datastore.NewQuery("Tasks").Limit(pageSize) if cursorStr != "" { cursor, err := datastore.DecodeCursor(cursorStr) if err != nil { log.Fatalf("Bad cursor %q: %v", cursorStr, err) } query = query.Start(cursor) } // Read the tasks. var tasks []Task var task Task it := client.Run(ctx, query) _, err := it.Next(&task) for err == nil { tasks = append(tasks, task) _, err = it.Next(&task) } if err != datastore.Done { log.Fatalf("Failed fetching results: %v", err) } // Get the cursor for the next page of results. nextCursor, err := it.Cursor() // [END cursor_paging] _ = err // Check the error. _ = nextCursor // Use nextCursor.String as the next page's token. }
func ExampleDecodeCursor() { // See Query.Start for a fuller example of DecodeCursor. // getCursor represents a function that returns a cursor from a previous // iteration in string form. cursorString := getCursor() cursor, err := datastore.DecodeCursor(cursorString) if err != nil { // TODO: Handle error. } _ = cursor // TODO: Use the cursor with Query.Start or Query.End. }
func ExampleQuery_Start() { // This example demonstrates how to use cursors and Query.Start // to resume an iteration. ctx := context.Background() client, err := datastore.NewClient(ctx, "project-id") if err != nil { // TODO: Handle error. } // getCursor represents a function that returns a cursor from a previous // iteration in string form. cursorString := getCursor() cursor, err := datastore.DecodeCursor(cursorString) if err != nil { // TODO: Handle error. } it := client.Run(ctx, datastore.NewQuery("Post").Start(cursor)) _ = it // TODO: Use iterator. }