共用方式為


QueryIterator class

代表 QueryIterator 物件,這是摘要或查詢響應的實作,可讓周遊和逐一查看 Azure Cosmos DB 資料庫服務中的回應。

方法

fetchAll()

擷取查詢的所有頁面,並傳回單一FeedResponse。

範例

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

從摘要擷取下一個批次。

視您的設定和查詢類型而定,這可能會或可能不會從後端擷取更多頁面。 匯總查詢通常會在傳回第一批回應之前擷取所有後端頁面。

範例

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

取得異步反覆運算器,其會在完成前產生結果。

注意:AsyncIterators 是一項非常新功能,您可能需要使用 polyfils/etc,才能在您的程式代碼中使用它們。

如果您使用 TypeScript,只要以 ES6 或更新版本為目標,並在節點 6 或更新版本上執行,就可以使用下列 polyfill。

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

範例

逐一查看所有資料庫

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

根據接續令牌的值或 QueryIterator 中目前批次剩餘的項目,判斷是否有剩餘的資源要處理。

reset()

將 QueryIterator 重設為開頭,並清除其中的所有資源

範例

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

方法詳細資料

fetchAll()

擷取查詢的所有頁面,並傳回單一FeedResponse。

範例

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

傳回

Promise<FeedResponse<T>>

fetchNext()

從摘要擷取下一個批次。

視您的設定和查詢類型而定,這可能會或可能不會從後端擷取更多頁面。 匯總查詢通常會在傳回第一批回應之前擷取所有後端頁面。

範例

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

傳回

Promise<FeedResponse<T>>

getAsyncIterator()

取得異步反覆運算器,其會在完成前產生結果。

注意:AsyncIterators 是一項非常新功能,您可能需要使用 polyfils/etc,才能在您的程式代碼中使用它們。

如果您使用 TypeScript,只要以 ES6 或更新版本為目標,並在節點 6 或更新版本上執行,就可以使用下列 polyfill。

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

範例

逐一查看所有資料庫

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

傳回

AsyncIterable<FeedResponse<T>>

hasMoreResults()

根據接續令牌的值或 QueryIterator 中目前批次剩餘的項目,判斷是否有剩餘的資源要處理。

function hasMoreResults(): boolean

傳回

boolean

如果 QueryIterator 中有其他元素要處理,則為 true。

reset()

將 QueryIterator 重設為開頭,並清除其中的所有資源

範例

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