DynamoDB begins_with查询无法获取数据问题求助
问题排查与解决方案
核心错误:排序键属性名误用
你在KeyConditionExpression里把排序键值的格式当成了属性名。你的排序键属性名应该是表定义里的实际字段名(比如sortKey、sk这类),而不是teamId#taskId#checkpointId——这个是排序键值的格式。
比如,如果你的表中排序键的属性名为sortKey,正确的KeyConditionExpression写法如下:
"userId = :userId AND begins_with(sortKey, :teamTaskId)"
其他排查点
- 格式一致性检查:确认数据库中排序键的值严格遵循
teamId#taskId#checkpointId格式,没有空格、多余符号或分隔符错误(比如用-代替了#)。 - 大小写敏感验证:DynamoDB查询区分大小写,检查请求参数
userId/teamId/taskId的大小写和数据库存储的完全一致。 - 前缀完整性确认:确保
ExpressionAttributeValues中的:teamTaskId是${teamId}#${taskId}#,末尾的#不能省略——只有这样才能匹配所有以teamId#taskId#开头的checkpoint记录。 - 表名与权限排查:验证
Table变量对应的表名是否正确,同时确认后端服务的IAM角色拥有该表的query权限。 - 错误日志输出:在
getUserById的catch块中添加console.log(error)打印错误详情,若服务端报错,能直接定位具体原因(比如表不存在、权限不足)。
内容的提问来源于stack exchange,提问作者Mathew
相关产品推荐
相关产品推荐

