QueryIterator class
Stellt ein QueryIterator-Objekt dar, eine Implementierung der Feed- oder Abfrageantwort, die das Durchlaufen und Durchlaufen der Antwort im Azure Cosmos DB-Datenbankdienst ermöglicht.
Methoden
| fetch |
Ruft alle Seiten für die Abfrage ab und gibt einen einzelnen FeedResponse zurück. Beispiel
|
| fetch |
Rufen Sie den nächsten Batch aus dem Feed ab. Dies kann je nach Ihren Einstellungen und dem Abfragetyp mehr Seiten aus dem Back-End abrufen oder nicht. Aggregierte Abfragen rufen in der Regel alle Back-End-Seiten ab, bevor der erste Batch von Antworten zurückgegeben wird. Beispiel
|
| get |
Ruft einen asynchronen Iterator ab, der Ergebnisse bis zum Abschluss liefert. HINWEIS: AsyncIterators sind ein sehr neues Feature, und Möglicherweise müssen Sie polyfils/etc. verwenden, um sie in Ihrem Code zu verwenden. Wenn Sie TypeScript verwenden, können Sie das folgende Polyfill verwenden, solange Sie ES6 oder höher als Ziel verwenden und auf Node 6 oder höher ausgeführt werden.
Beispiel Durchlaufen aller Datenbanken
|
| has |
Ermitteln Sie, ob noch verbleibende Ressourcen vorhanden sind, die basierend auf dem Wert des Fortsetzungstokens oder den Elementen im aktuellen Batch im QueryIterator verarbeitet werden sollen. |
| reset() | Setzen Sie den QueryIterator auf den Anfang zurück und löschen Sie alle darin enthaltenen Ressourcen. Beispiel
|
Details zur Methode
fetchAll()
Ruft alle Seiten für die Abfrage ab und gibt einen einzelnen FeedResponse zurück.
Beispiel
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>>
Gibt zurück
Promise<FeedResponse<T>>
fetchNext()
Rufen Sie den nächsten Batch aus dem Feed ab.
Dies kann je nach Ihren Einstellungen und dem Abfragetyp mehr Seiten aus dem Back-End abrufen oder nicht. Aggregierte Abfragen rufen in der Regel alle Back-End-Seiten ab, bevor der erste Batch von Antworten zurückgegeben wird.
Beispiel
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>>
Gibt zurück
Promise<FeedResponse<T>>
getAsyncIterator()
Ruft einen asynchronen Iterator ab, der Ergebnisse bis zum Abschluss liefert.
HINWEIS: AsyncIterators sind ein sehr neues Feature, und Möglicherweise müssen Sie polyfils/etc. verwenden, um sie in Ihrem Code zu verwenden.
Wenn Sie TypeScript verwenden, können Sie das folgende Polyfill verwenden, solange Sie ES6 oder höher als Ziel verwenden und auf Node 6 oder höher ausgeführt werden.
if (!Symbol || !Symbol.asyncIterator) {
(Symbol as any).asyncIterator = Symbol.for("Symbol.asyncIterator");
}
Beispiel
Durchlaufen aller Datenbanken
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>>
Gibt zurück
AsyncIterable<FeedResponse<T>>
hasMoreResults()
Ermitteln Sie, ob noch verbleibende Ressourcen vorhanden sind, die basierend auf dem Wert des Fortsetzungstokens oder den Elementen im aktuellen Batch im QueryIterator verarbeitet werden sollen.
function hasMoreResults(): boolean
Gibt zurück
boolean
"true", wenn im QueryIterator andere Elemente verarbeitet werden sollen.
reset()
Setzen Sie den QueryIterator auf den Anfang zurück und löschen Sie alle darin enthaltenen Ressourcen.
Beispiel
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()