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
| fetch |
Sorgunun tüm sayfalarını getirin ve tek bir FeedResponse döndürür. Örnek
|
| fetch |
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
|
| get |
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.
Örnek Tüm veritabanlarında yineleme
|
| has |
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
|
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()