Delen via


QueryIterator class

Vertegenwoordigt een QueryIterator-object, een implementatie van feed- of queryreacties waarmee doorkruising en iteratie van het antwoord in de Azure Cosmos DB-databaseservice mogelijk is.

Methoden

fetchAll()

Haal alle pagina's voor de query op en retourneer één FeedResponse.

voorbeeld van

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()

Haal de volgende batch op uit de feed.

Dit kan al dan niet meer pagina's ophalen uit de back-end, afhankelijk van uw instellingen en het type query. Statistische query's halen over het algemeen alle back-endpagina's op voordat de eerste batch met antwoorden wordt geretourneerd.

voorbeeld van

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()

Hiermee wordt een asynchrone iterator opgehaald die resultaten oplevert totdat deze is voltooid.

OPMERKING: AsyncIterators zijn een zeer nieuwe functie en mogelijk moet u polyfils/etc. gebruiken om ze in uw code te kunnen gebruiken.

Als u TypeScript gebruikt, kunt u de volgende polyfill gebruiken zolang u zich op ES6 of hoger richt en op Node 6 of hoger wordt uitgevoerd.

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

voorbeeld van

Alle databases herhalen

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()

Bepaal of er nog resterende resources zijn die moeten worden verwerkt op basis van de waarde van het vervolgtoken of de elementen die in de huidige batch in de QueryIterator overblijven.

reset()

De QueryIterator opnieuw instellen op het begin en alle resources erin wissen

voorbeeld van

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();

Methodedetails

fetchAll()

Haal alle pagina's voor de query op en retourneer één FeedResponse.

voorbeeld van

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>>

Retouren

Promise<FeedResponse<T>>

fetchNext()

Haal de volgende batch op uit de feed.

Dit kan al dan niet meer pagina's ophalen uit de back-end, afhankelijk van uw instellingen en het type query. Statistische query's halen over het algemeen alle back-endpagina's op voordat de eerste batch met antwoorden wordt geretourneerd.

voorbeeld van

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>>

Retouren

Promise<FeedResponse<T>>

getAsyncIterator()

Hiermee wordt een asynchrone iterator opgehaald die resultaten oplevert totdat deze is voltooid.

OPMERKING: AsyncIterators zijn een zeer nieuwe functie en mogelijk moet u polyfils/etc. gebruiken om ze in uw code te kunnen gebruiken.

Als u TypeScript gebruikt, kunt u de volgende polyfill gebruiken zolang u zich op ES6 of hoger richt en op Node 6 of hoger wordt uitgevoerd.

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

voorbeeld van

Alle databases herhalen

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>>

Retouren

AsyncIterable<FeedResponse<T>>

hasMoreResults()

Bepaal of er nog resterende resources zijn die moeten worden verwerkt op basis van de waarde van het vervolgtoken of de elementen die in de huidige batch in de QueryIterator overblijven.

function hasMoreResults(): boolean

Retouren

boolean

waar als er andere elementen moeten worden verwerkt in de QueryIterator.

reset()

De QueryIterator opnieuw instellen op het begin en alle resources erin wissen

voorbeeld van

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()