在 DynamoDB 中,可以像这样在单个属性上设置 ConditionExpression
:
ConditionExpression: 'attribute_exists(user_id)'
如果此 ConditionExpression 是在更新时定义的,并且 user_id 不存在,则 ConditionExpression 的计算结果为 false 并返回异常:
message: 'The conditional request failed',
code: 'ConditionalCheckFailedException',
requestId: 'KPFMA7S5P110FCOMLPMKP15UDBVV4KQNSO6AEMVJF66Q9ASUAAJG',
statusCode: 400
虽然只有一个条件可以评估一切都清楚,但是当指定多个条件时,DynamoDB 不会报告哪个条件失败:
ConditionExpression: 'attribute_exists(user_id) and iq = 85'
then exception 与上面相同,因此无法说出究竟是什么导致条件评估为 false。
有没有办法(甚至是 hacky 的)从该异常信息中获取更多详细信息?
最佳答案
不幸的是,DynamoDB 不会提供任何额外的详细信息 - 它不会告诉您 ConditionExpression 的哪一部分失败了。
我唯一能想到的就是在运行更新表达式之前或之后立即执行查询,比较必要的属性,然后记录结果。
如果您在更新之前运行查询,您可以根据需要执行或跳过更新。实际上,您将实现自己的条件处理。
或者,您可以在更新 try block 之后将查询作为 catch block 的一部分执行,这样查询只会在更新失败时运行。
关于node.js - 从 AWS DynamoDB 中的 `ConditionalCheckFailedException` 获取更多详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48319889/