如何通过Notion API获取数据库中的页面总数
答复
你没有遗漏官方文档的相关接口说明,截至当前Notion开放API没有提供可直接返回数据库页面总数的专属接口。
你当前实现的循环翻页累加结果条数的逻辑,就是目前官方支持的获取数据库页面总数的标准方案,不存在更简便的官方原生实现。
现有遍历逻辑优化
可以对现有代码做两处调整,大幅提升计数请求的效率:
- 接口请求时将
page_size参数设为单页支持的最大值100,把总请求轮次降到最低 - 配置空的
filter_properties参数,让接口仅返回页面基础标识、不返回任何页面属性内容,能将单页响应体积压缩九成以上,加快单请求响应速度
优化后的核心代码如下:
let count = 0 let hasMore = true let nextCursor: string | undefined = undefined while (hasMore) { const result: QueryDatabaseResponse = await notion.databases.query({ database_id: databaseId, start_cursor: nextCursor, page_size: 100, filter_properties: [] }) count += result.results.length hasMore = result.has_more nextCursor = result.next_cursor ?? undefined }
高频查询场景的替代方案
如果业务场景需要频繁查询该数据库的页面总数,且数据库内页面量级较大,不建议每次都实时调用接口遍历拉取:
- 可在自有业务侧维护独立的计数缓存
- 每次通过API对该数据库执行新增页面、删除页面、归档/恢复页面操作时,同步更新缓存的计数值
- 每隔固定周期执行一次全量遍历逻辑校准缓存,避免计数出现偏差
内容的提问来源于stack exchange,提问作者Dominik Bláha
相关产品推荐
相关产品推荐

