func executeItemQuery(con *Context, q *datastore.Query, limit int, cursorStr string) ([]Item, string, error) { if cursor, err := datastore.DecodeCursor(cursorStr); err == nil { q = q.Start(cursor) } var is = make([]Item, 0, limit) var err error t := q.Run(con.C) for { var i Item _, err = t.Next(&i) if err == datastore.Done { break } is = append(is, i) if err != nil { con.Log.Errorf("Error fetching next item: %v", err) return nil, "", err } } var cursor datastore.Cursor if cursor, err = t.Cursor(); err == nil { return is, cursor.String(), nil } return nil, "", err }