You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CosmosDbPartitionedStorage的read()方法在无服务器Cosmos DB上无法正常工作

botbuilder-azure CosmosDbPartitionedStorage 无服务器Cosmos DB环境read返回空对象解决方案

相同代码在预置吞吐量(Provisioned throughput)Cosmos DB中运行正常,切换到无服务器Cosmos DB后调用read()方法仅返回空对象{},可按以下优先级排查解决:

  • 核对无服务器Cosmos DB容器分区键配置
    当你初始化CosmosDbPartitionedStorage时设置了compatibilityMode: false,SDK要求目标容器的分区键路径必须为/partitionKey。如果创建无服务器容器时自定义了其他分区键(例如/id),会导致SDK无法正确定位分区执行查询,最终返回空结果。
    解决方法:删除当前无服务器账号下的目标容器,重新创建时指定分区键为/partitionKey即可。
  • 升级botbuilder-azure依赖包版本
    4.15.0以下版本的botbuilder-azure存在无服务器Cosmos DB响应解析兼容Bug,会导致查询到的有效数据无法被正确序列化到返回对象中。
    解决方法:执行以下命令升级到最新稳定版:
    npm install botbuilder-azure@latest
    
  • 确认传入read方法的存储键正确
    CosmosDbPartitionedStorage存储的状态文档ID默认会根据状态类型拼接前缀,例如用户状态ID格式为emulator/users/{userId},会话状态ID格式为emulator/conversations/{conversationId}。如果直接传入'id'作为查询参数,而Cosmos中不存在对应ID的文档,自然会返回空对象。你可以先到Azure门户Cosmos DB的数据资源管理器中,核对目标文档的真实ID值,替换后再测试。

内容的提问来源于stack exchange,提问作者Subhankar Ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:06:03