QueryIterator class

Represents a QueryIterator Object, an implementation of feed or query response that enables traversal and iterating over the response in the Azure Cosmos DB database service.

Methods

fetchAll()

Fetch all pages for the query and return a single FeedResponse.

fetchNext()

Retrieve the next batch from the feed.

This may or may not fetch more pages from the backend depending on your settings and the type of query. Aggregate queries will generally fetch all backend pages before returning the first batch of responses.

getAsyncIterator()

Gets an async iterator that will yield results until completion.

NOTE: AsyncIterators are a very new feature and you might need to use polyfils/etc. in order to use them in your code.

If you're using TypeScript, you can use the following polyfill as long as you target ES6 or higher and are running on Node 6 or higher.

if (!Symbol || !Symbol.asyncIterator) {
  (Symbol as any).asyncIterator = Symbol.for("Symbol.asyncIterator");
}

Example

Iterate over all databases

for await(const { resources: db } of client.databases.readAll().getAsyncIterator()) {
  console.log(`Got ${db} from AsyncIterator`);
}
hasMoreResults()

Determine if there are still remaining resources to process based on the value of the continuation token or the elements remaining on the current batch in the QueryIterator.

reset()

Reset the QueryIterator to the beginning and clear all the resources inside it

Method Details

fetchAll()

Fetch all pages for the query and return a single FeedResponse.

function fetchAll(): Promise<FeedResponse<T>>

Returns

Promise<FeedResponse<T>>

fetchNext()

Retrieve the next batch from the feed.

This may or may not fetch more pages from the backend depending on your settings and the type of query. Aggregate queries will generally fetch all backend pages before returning the first batch of responses.

function fetchNext(): Promise<FeedResponse<T>>

Returns

Promise<FeedResponse<T>>

getAsyncIterator()

Gets an async iterator that will yield results until completion.

NOTE: AsyncIterators are a very new feature and you might need to use polyfils/etc. in order to use them in your code.

If you're using TypeScript, you can use the following polyfill as long as you target ES6 or higher and are running on Node 6 or higher.

if (!Symbol || !Symbol.asyncIterator) {
  (Symbol as any).asyncIterator = Symbol.for("Symbol.asyncIterator");
}

Example

Iterate over all databases

for await(const { resources: db } of client.databases.readAll().getAsyncIterator()) {
  console.log(`Got ${db} from AsyncIterator`);
}
function getAsyncIterator(): AsyncIterable<FeedResponse<T>>

Returns

AsyncIterable<FeedResponse<T>>

hasMoreResults()

Determine if there are still remaining resources to process based on the value of the continuation token or the elements remaining on the current batch in the QueryIterator.

function hasMoreResults(): boolean

Returns

boolean

true if there is other elements to process in the QueryIterator.

reset()

Reset the QueryIterator to the beginning and clear all the resources inside it

function reset()