QueryIterator class
Representa um objeto QueryIterator, uma implementação de feed ou resposta de consulta que permite a travessia e a iteração sobre a resposta no serviço de banco de dados do Azure Cosmos DB.
Métodos
| fetch |
Buscar todas as páginas para a consulta e retornar um único FeedResponse. Exemplo
|
| fetch |
Recupere o próximo lote do feed. Isso pode ou não buscar mais páginas do back-end, dependendo de suas configurações e do tipo de consulta. As consultas agregadas geralmente buscam todas as páginas de back-end antes de retornar o primeiro lote de respostas. Exemplo
|
| get |
Obtém um iterador assíncrono que produzirá resultados até a conclusão. NOTA: AsyncIterators são um recurso muito novo e você pode precisar usar polyfils/etc. para usá-los em seu código. Se você estiver usando o TypeScript, poderá usar o polipreenchimento a seguir, desde que tenha como destino o ES6 ou superior e esteja sendo executado no Nó 6 ou superior.
Exemplo Iterar em todos os bancos de dados
|
| has |
Determine se ainda há recursos restantes para processar com base no valor do token de continuação ou nos elementos restantes no lote atual no QueryIterator. |
| reset() | Redefina o QueryIterator para o início e limpe todos os recursos dentro dele Exemplo
|
Detalhes de Método
fetchAll()
Buscar todas as páginas para a consulta e retornar um único FeedResponse.
Exemplo
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>>
Devoluções
Promise<FeedResponse<T>>
fetchNext()
Recupere o próximo lote do feed.
Isso pode ou não buscar mais páginas do back-end, dependendo de suas configurações e do tipo de consulta. As consultas agregadas geralmente buscam todas as páginas de back-end antes de retornar o primeiro lote de respostas.
Exemplo
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>>
Devoluções
Promise<FeedResponse<T>>
getAsyncIterator()
Obtém um iterador assíncrono que produzirá resultados até a conclusão.
NOTA: AsyncIterators são um recurso muito novo e você pode precisar usar polyfils/etc. para usá-los em seu código.
Se você estiver usando o TypeScript, poderá usar o polipreenchimento a seguir, desde que tenha como destino o ES6 ou superior e esteja sendo executado no Nó 6 ou superior.
if (!Symbol || !Symbol.asyncIterator) {
(Symbol as any).asyncIterator = Symbol.for("Symbol.asyncIterator");
}
Exemplo
Iterar em todos os bancos de dados
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>>
Devoluções
AsyncIterable<FeedResponse<T>>
hasMoreResults()
Determine se ainda há recursos restantes para processar com base no valor do token de continuação ou nos elementos restantes no lote atual no QueryIterator.
function hasMoreResults(): boolean
Devoluções
boolean
true se houver outros elementos para processar no QueryIterator.
reset()
Redefina o QueryIterator para o início e limpe todos os recursos dentro dele
Exemplo
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()