ari*_*ing 2 amazon-web-services node.js amazon-dynamodb aws-lambda
在DynamoDB中,可以ConditionExpression在单个属性上设置如下:
ConditionExpression: 'attribute_exists(user_id)'
Run Code Online (Sandbox Code Playgroud)
如果此ConditionExpression是在更新中定义的,并且user_id不存在,则ConditionExpression的计算结果为false并返回异常:
message: 'The conditional request failed',
code: 'ConditionalCheckFailedException',
requestId: 'KPFMA7S5P110FCOMLPMKP15UDBVV4KQNSO6AEMVJF66Q9ASUAAJG',
statusCode: 400
Run Code Online (Sandbox Code Playgroud)
尽管只有一个条件可以评估所有情况,但所有条件都明确时,DynamoDB不会报告哪个条件失败:
ConditionExpression: 'attribute_exists(user_id) and iq = 85'
Run Code Online (Sandbox Code Playgroud)
那么异常与上述相同,因此无法说出是什么导致条件评估为假。
有没有办法(甚至是骇人听闻的)从异常信息中获取更多详细信息?
不幸的是,DynamoDB将不提供任何其他详细信息-它不会告诉您ConditionExpression的哪一部分失败。
我唯一想做的就是在运行更新表达式之前或之后立即执行查询,比较必要的属性,并记录结果。
如果在更新之前运行查询,则可以根据需要执行或跳过更新。实际上,您将实现自己的条件处理。
或者,您可以在更新try块之后将查询作为catch块的一部分执行,这样查询仅在更新失败时才运行。
| 归档时间: |
|
| 查看次数: |
941 次 |
| 最近记录: |