Bagikan melalui


QueryIterator class

Mewakili Objek QueryIterator, implementasi umpan atau respons kueri yang memungkinkan traversal dan iterasi atas respons dalam layanan database Azure Cosmos DB.

Metode

fetchAll()

Ambil semua halaman untuk kueri dan kembalikan satu FeedResponse.

Contoh

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

Ambil batch berikutnya dari umpan.

Ini mungkin atau mungkin tidak mengambil lebih banyak halaman dari backend tergantung pada pengaturan Anda dan jenis kueri. Kueri agregat umumnya akan mengambil semua halaman backend sebelum mengembalikan batch respons pertama.

Contoh

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

Mendapatkan iterator asinkron yang akan menghasilkan hasil hingga selesai.

CATATAN: Asinkron adalah fitur yang sangat baru dan Anda mungkin perlu menggunakan polifils/dll. untuk menggunakannya dalam kode Anda.

Jika Anda menggunakan TypeScript, Anda dapat menggunakan polifill berikut selama Anda menargetkan ES6 atau yang lebih tinggi dan berjalan pada Node 6 atau yang lebih tinggi.

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

Contoh

Melakukan iterasi di semua database

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

Tentukan apakah masih ada sumber daya yang tersisa untuk diproses berdasarkan nilai token kelanjutan atau elemen yang tersisa pada batch saat ini di QueryIterator.

reset()

Reset QueryIterator ke awal dan hapus semua sumber daya di dalamnya

Contoh

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

Detail Metode

fetchAll()

Ambil semua halaman untuk kueri dan kembalikan satu FeedResponse.

Contoh

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

Mengembalikan

Promise<FeedResponse<T>>

fetchNext()

Ambil batch berikutnya dari umpan.

Ini mungkin atau mungkin tidak mengambil lebih banyak halaman dari backend tergantung pada pengaturan Anda dan jenis kueri. Kueri agregat umumnya akan mengambil semua halaman backend sebelum mengembalikan batch respons pertama.

Contoh

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

Mengembalikan

Promise<FeedResponse<T>>

getAsyncIterator()

Mendapatkan iterator asinkron yang akan menghasilkan hasil hingga selesai.

CATATAN: Asinkron adalah fitur yang sangat baru dan Anda mungkin perlu menggunakan polifils/dll. untuk menggunakannya dalam kode Anda.

Jika Anda menggunakan TypeScript, Anda dapat menggunakan polifill berikut selama Anda menargetkan ES6 atau yang lebih tinggi dan berjalan pada Node 6 atau yang lebih tinggi.

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

Contoh

Melakukan iterasi di semua database

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

Mengembalikan

AsyncIterable<FeedResponse<T>>

hasMoreResults()

Tentukan apakah masih ada sumber daya yang tersisa untuk diproses berdasarkan nilai token kelanjutan atau elemen yang tersisa pada batch saat ini di QueryIterator.

function hasMoreResults(): boolean

Mengembalikan

boolean

true jika ada elemen lain untuk diproses di QueryIterator.

reset()

Reset QueryIterator ke awal dan hapus semua sumber daya di dalamnya

Contoh

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