Aracılığıyla paylaş


QueryIterator class

Azure Cosmos DB veritabanı hizmetindeki yanıt üzerinde dolaşmayı ve yinelemeyi sağlayan bir akış veya sorgu yanıtı uygulaması olan QueryIterator Nesnesini temsil eder.

Yöntemler

fetchAll()

Sorgunun tüm sayfalarını getirin ve tek bir FeedResponse döndürür.

Örnek

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

Akıştan sonraki toplu işlemi alın.

Bu, ayarlarınıza ve sorgu türüne bağlı olarak arka uçtan daha fazla sayfa getirebilir veya getirmeyebilir. Toplama sorguları genellikle ilk yanıt toplu işlemini döndürmeden önce tüm arka uç sayfalarını getirir.

Örnek

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

Tamamlanmaya kadar sonuç verecek zaman uyumsuz bir yineleyici alır.

NOT: AsyncIterators çok yeni bir özelliktir ve bunları kodunuzda kullanmak için polyfils/vb. kullanmanız gerekebilir.

TypeScript kullanıyorsanız, ES6 veya üzerini hedeflediğiniz ve Düğüm 6 veya üzeri üzerinde çalıştığınız sürece aşağıdaki çoklu doldurmayı kullanabilirsiniz.

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

Örnek

Tüm veritabanlarında yineleme

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

Devam belirtecinin değerine veya QueryIterator'daki geçerli toplu işte kalan öğelere göre işlenmek üzere hala kalan kaynaklar olup olmadığını belirleyin.

reset()

QueryIterator'ı en başa sıfırlayın ve içindeki tüm kaynakları temizleyin

Örnek

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

Yöntem Ayrıntıları

fetchAll()

Sorgunun tüm sayfalarını getirin ve tek bir FeedResponse döndürür.

Örnek

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

Döndürülenler

Promise<FeedResponse<T>>

fetchNext()

Akıştan sonraki toplu işlemi alın.

Bu, ayarlarınıza ve sorgu türüne bağlı olarak arka uçtan daha fazla sayfa getirebilir veya getirmeyebilir. Toplama sorguları genellikle ilk yanıt toplu işlemini döndürmeden önce tüm arka uç sayfalarını getirir.

Örnek

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

Döndürülenler

Promise<FeedResponse<T>>

getAsyncIterator()

Tamamlanmaya kadar sonuç verecek zaman uyumsuz bir yineleyici alır.

NOT: AsyncIterators çok yeni bir özelliktir ve bunları kodunuzda kullanmak için polyfils/vb. kullanmanız gerekebilir.

TypeScript kullanıyorsanız, ES6 veya üzerini hedeflediğiniz ve Düğüm 6 veya üzeri üzerinde çalıştığınız sürece aşağıdaki çoklu doldurmayı kullanabilirsiniz.

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

Örnek

Tüm veritabanlarında yineleme

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

Döndürülenler

AsyncIterable<FeedResponse<T>>

hasMoreResults()

Devam belirtecinin değerine veya QueryIterator'daki geçerli toplu işte kalan öğelere göre işlenmek üzere hala kalan kaynaklar olup olmadığını belirleyin.

function hasMoreResults(): boolean

Döndürülenler

boolean

QueryIterator'da işlenmek üzere başka öğeler varsa true.

reset()

QueryIterator'ı en başa sıfırlayın ve içindeki tüm kaynakları temizleyin

Örnek

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