Поделиться через


QueryIterator class

Представляет объект QueryIterator, реализацию веб-канала или ответа запроса, которая включает обход и итерацию ответа в службе базы данных Azure Cosmos DB.

Методы

fetchAll()

Извлеките все страницы запроса и верните один канал FeedResponse.

пример

import { CosmosClient } from "@azure/cosmos";

const endpoint = "https://your-account.documents.azure.com";
const key = "<database account masterkey>";
const client = new CosmosClient({ endpoint, key });

const { database } = await client.databases.createIfNotExists({ id: "Test Database" });

const { container } = await database.containers.createIfNotExists({ id: "Test Container" });

const { resources } = await container.items
  .query("SELECT * from c WHERE c.isCapitol = true")
  .fetchAll();
fetchNext()

Получите следующий пакет из веб-канала.

Это может или не может получить больше страниц из серверной части в зависимости от параметров и типа запроса. Агрегированные запросы обычно извлекает все внутренние страницы, прежде чем возвращать первый пакет ответов.

пример

import { CosmosClient } from "@azure/cosmos";

const endpoint = "https://your-account.documents.azure.com";
const key = "<database account masterkey>";
const client = new CosmosClient({ endpoint, key });

const { database } = await client.databases.createIfNotExists({ id: "Test Database" });

const { container } = await database.containers.createIfNotExists({ id: "Test Container" });

const querySpec = {
  query: "SELECT c.status, COUNT(c.id) AS count FROM c GROUP BY c.status",
};
const queryOptions = {
  maxItemCount: 10, // maximum number of items to return per page
  enableCrossPartitionQuery: true,
};
const queryIterator = container.items.query(querySpec, queryOptions);
while (queryIterator.hasMoreResults()) {
  const { resources: result } = await queryIterator.fetchNext();
  // process results
}
getAsyncIterator()

Возвращает асинхронный итератор, который даст результаты до завершения.

ПРИМЕЧАНИЕ. AsyncIterator — это очень новая функция, и для их использования в коде может потребоваться использовать полификс/т. д.

Если вы используете TypeScript, можно использовать следующую полизаполнения до тех пор, пока вы используете ES6 или более поздней версии и работаете на узле 6 или выше.

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

пример

Итерацию по всем базам данных

import { CosmosClient } from "@azure/cosmos";

const endpoint = "https://your-account.documents.azure.com";
const key = "<database account masterkey>";
const client = new CosmosClient({ endpoint, key });

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

Определите, есть ли оставшиеся ресурсы для обработки на основе значения маркера продолжения или элементов, оставшихся в текущем пакете в QueryIterator.

reset()

Сброс элемента QueryIterator в начало и очистка всех ресурсов внутри него

пример

import { CosmosClient } from "@azure/cosmos";

const endpoint = "https://your-account.documents.azure.com";
const key = "<database account masterkey>";
const client = new CosmosClient({ endpoint, key });
const { database } = await client.databases.createIfNotExists({ id: "Test Database" });
const { container } = await database.containers.createIfNotExists({ id: "Test Container" });

const querySpec = {
  query: "SELECT c.status, COUNT(c.id) AS count FROM c GROUP BY c.status",
};
const queryIterator = container.items.query(querySpec);
while (queryIterator.hasMoreResults()) {
  const { resources: result } = await queryIterator.fetchNext();
  // process results
}
queryIterator.reset();

Сведения о методе

fetchAll()

Извлеките все страницы запроса и верните один канал FeedResponse.

пример

import { CosmosClient } from "@azure/cosmos";

const endpoint = "https://your-account.documents.azure.com";
const key = "<database account masterkey>";
const client = new CosmosClient({ endpoint, key });

const { database } = await client.databases.createIfNotExists({ id: "Test Database" });

const { container } = await database.containers.createIfNotExists({ id: "Test Container" });

const { resources } = await container.items
  .query("SELECT * from c WHERE c.isCapitol = true")
  .fetchAll();
function fetchAll(): Promise<FeedResponse<T>>

Возвращаемое значение

Promise<FeedResponse<T>>

fetchNext()

Получите следующий пакет из веб-канала.

Это может или не может получить больше страниц из серверной части в зависимости от параметров и типа запроса. Агрегированные запросы обычно извлекает все внутренние страницы, прежде чем возвращать первый пакет ответов.

пример

import { CosmosClient } from "@azure/cosmos";

const endpoint = "https://your-account.documents.azure.com";
const key = "<database account masterkey>";
const client = new CosmosClient({ endpoint, key });

const { database } = await client.databases.createIfNotExists({ id: "Test Database" });

const { container } = await database.containers.createIfNotExists({ id: "Test Container" });

const querySpec = {
  query: "SELECT c.status, COUNT(c.id) AS count FROM c GROUP BY c.status",
};
const queryOptions = {
  maxItemCount: 10, // maximum number of items to return per page
  enableCrossPartitionQuery: true,
};
const queryIterator = container.items.query(querySpec, queryOptions);
while (queryIterator.hasMoreResults()) {
  const { resources: result } = await queryIterator.fetchNext();
  // process results
}
function fetchNext(): Promise<FeedResponse<T>>

Возвращаемое значение

Promise<FeedResponse<T>>

getAsyncIterator()

Возвращает асинхронный итератор, который даст результаты до завершения.

ПРИМЕЧАНИЕ. AsyncIterator — это очень новая функция, и для их использования в коде может потребоваться использовать полификс/т. д.

Если вы используете TypeScript, можно использовать следующую полизаполнения до тех пор, пока вы используете ES6 или более поздней версии и работаете на узле 6 или выше.

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

пример

Итерацию по всем базам данных

import { CosmosClient } from "@azure/cosmos";

const endpoint = "https://your-account.documents.azure.com";
const key = "<database account masterkey>";
const client = new CosmosClient({ endpoint, key });

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

Возвращаемое значение

AsyncIterable<FeedResponse<T>>

hasMoreResults()

Определите, есть ли оставшиеся ресурсы для обработки на основе значения маркера продолжения или элементов, оставшихся в текущем пакете в QueryIterator.

function hasMoreResults(): boolean

Возвращаемое значение

boolean

Значение true, если в QueryIterator есть другие элементы.

reset()

Сброс элемента QueryIterator в начало и очистка всех ресурсов внутри него

пример

import { CosmosClient } from "@azure/cosmos";

const endpoint = "https://your-account.documents.azure.com";
const key = "<database account masterkey>";
const client = new CosmosClient({ endpoint, key });
const { database } = await client.databases.createIfNotExists({ id: "Test Database" });
const { container } = await database.containers.createIfNotExists({ id: "Test Container" });

const querySpec = {
  query: "SELECT c.status, COUNT(c.id) AS count FROM c GROUP BY c.status",
};
const queryIterator = container.items.query(querySpec);
while (queryIterator.hasMoreResults()) {
  const { resources: result } = await queryIterator.fetchNext();
  // process results
}
queryIterator.reset();
function reset()