Node.js에서 CosmosDB 쿼리 연속 토큰 검색
5491 단어 cosmosdbserverlessazure
포털은 지역화 데이터를 관리하기 위해 Azure Functions를 사용합니다. 처음에는 Azure Table Storage로 프로젝트를 만들기 시작했지만 몇 가지 제한 사항(속도, 쿼리, 페이징)을 곧 발견했습니다. 아키텍처를 다시 생각할 때 처음에는 Azure Search와 테이블 저장소의 조합을 수행하고 싶었습니다. 가장 큰 문제는 현지화 스키마가 지속적으로 변경된다는 것입니다. 검색 스키마를 조정할 수 있지만 대부분의 경우 최적이 아닌 인덱스를 다시 만들어야 합니다.
Info : Read more about updating Azure Search index.
또 다른 접근 방식은 Azure Cosmos DB로 이동하는 것이지만 가격표가 함께 제공됩니다. free tier 이 있지만 할인만 제공합니다. 더 많이 사용하면 사용량에 대한 비용을 지불하기 시작합니다.
올해 초 빌드에서 그들은 여름에 프리뷰로 출시되는 서버리스 계층도 있을 것이라고 발표했습니다. 좋은 소식은 이제 이 계층을 사용할 수 있고 내 앱에 대한 요구 사항에 적합하다는 것입니다.
즉, 개발을 시작했습니다. 먼저 Azure Table Storage에서 Cosmos DB로 내 콘텐츠를 푸시했습니다. 좋습니다. 데이터를 검색하기 위해 Azure Functions를 만들기 시작했습니다. 우리는 +2000 키에 대해 이야기했기 때문에 일부 페이징을 구현해야 했고 다른 문제를 우연히 발견했습니다. Cosmos 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.
Node.js의 연속 토큰
Node.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();
Cosmos DB 쿼리의 헤더
쿼리 옵션을 살펴보았을 때 쿼리 옵션에
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
};
Reference
이 문제에 관하여(Node.js에서 CosmosDB 쿼리 연속 토큰 검색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/estruyf/retrieving-the-cosmosdb-query-continuation-token-in-node-js-485p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)