如何通过CosmosDB SQL API for JS返回单条整数计数结果?
解决CosmosDB SQL API查询聚合值返回整数的问题
你的核心需求是从CosmosDB的聚合查询结果中提取纯整数值,而非包含该值的JSON对象。先修正你代码里的两个关键问题:
fetchAll()是异步方法,返回的是Promise,不能直接用[0]访问结果,必须用await等待异步操作完成- 聚合查询
select count(1) as recordCount from c返回的resources数组只会有一个元素,这个元素是包含recordCount字段的对象,提取该字段的值就是你要的整数
修正后的完整代码:
export class AssetTypeRepository extends BaseRepository<AssetType> { // 统计集合记录数的函数 async count(): Promise<number> { // 等待fetchAll异步操作完成,获取查询结果 const { resources } = await this._container.items .query("select count(1) as recordCount from c") .fetchAll(); // 聚合查询只会返回一条结果,取第一个对象的recordCount属性 return resources[0].recordCount; } }
关键说明:
- 必须给
count方法加上async关键字,因为内部使用了await fetchAll()返回的结果结构中,resources是查询结果数组,聚合查询的结果始终是长度为1的数组- 直接提取数组第一个元素的
recordCount字段,就能得到你需要的纯整数值
额外补充:如果是针对全集合的计数需求,除了聚合查询,也可以使用容器的readItemFeed配合手动计数,但count(1)的聚合查询是最简洁高效的方式。
内容的提问来源于stack exchange,提问作者mateoc15
相关产品推荐
相关产品推荐

