QueryIterator class
Mewakili Objek QueryIterator, implementasi umpan atau respons kueri yang memungkinkan traversal dan iterasi atas respons dalam layanan database Azure Cosmos DB.
Metode
| fetch |
Ambil semua halaman untuk kueri dan kembalikan satu FeedResponse. Contoh
|
| fetch |
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
|
| get |
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.
Contoh Melakukan iterasi di semua database
|
| has |
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
|
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()