ノードでColorsDBクエリ継続トークンを取得します.js


VALOでの内部ツールの1つについては、プロジェクトのローカライズを管理するためのポータルを作成しています.ポータル自体は静的なウェブサイトとして生成され、Azure静的Webアプリケーションでホストされます.Azureの静的なWebアプリケーションについての大きなことは、それがホスト機能とAzure機能を作成する機能が付属しています.
ポータルは、ローカライズ機能を管理するためのazure関数を使用します.最初に、私はAzureテーブル記憶装置でプロジェクトを作成し始めました、しかし、私は速く2つの制限(速度、質問、ページング)につまずきました.私が建築を考え直していたとき、私は最初にAzure検索とテーブル記憶の組合せをしたかったです.最大の問題は、ローカライズスキーマが連続的に変化することです.検索スキーマを適応することができますが、ほとんどの場合、最適ではないインデックスを再現する必要があります.

Info : Read more about updating Azure Search index.


もう一つのアプローチは紺碧のコスモスDBに移動することです、しかし、それは価格タグで来ます.あなたはfree tier , しかし、これはあなたに割引を与えます.あなたがより多くを使うならば、あなたはあなたの使用のために支払いを始めます.
今年初めにビルドで、彼らはまた、夏にプレビューでリリースされたServerlessティアがあると発表しました.良いニュースは、この層が利用可能になり、私は私のアプリを持っているニーズに合うことです.
と言った.最初に、私はAzureテーブル記憶からCosmos DBまで私の内容を押しやりました.すべての良いので、私は私のデータを取得するために私のazure関数を作成し始めた.我々は+ 2000キーについて話したので、私はいくつかのページングを実装し、別の問題につまずいた.コスモスDB、その継続トークンのみサポートされていた.NETとJava SDK.

Info : I use Node.js (TypeScript) straightforward, I like to work with TypeScript/JavaScript, and Azure Static Web Apps only supports TS/JS functions in the preview.


ノード内の継続トークン。js


ノードに従うとき.JSドキュメントのすべての項目を取得するには、次のコードスニペットを示します
const querySpec = { query: "SELECT * from c" };
const { resources: items } = await container.items.query(querySpec).fetchAll();
代わりにfetchAll() , あなたもfetchNext() . このメソッドはフィードから次のバッチを取得します.オプションとして、あなたはcontinuationToken . 問題は、このトークンは常にnull . レスポンスヘッダをチェックすると、次のようになります.
const querySpec = { query: "SELECT * from c" };
const resources = await container.items.query(querySpec).fetchNext();
宇宙からのヘッダー
私はクエリオプションを使用して、私はあなたがPartitionKey クエリオプションには、より多くのヘッダを返します.
返り値トークン
また、あなたはx-ms-continuation ヘッダをcontinuationToken ヘッダの値.
コードで使用する方法は次のとおりです.
const results = await container.items.query(querySpec, {
  maxItemCount: 20,
  partitionKey: "category",
  continuationToken
}).fetchNext();

return {
  items: results.resources,
  nextPageToken: results.continuationToken
};