gpt4 book ai didi

javascript - 我在使用 Node js 对 dynamoDB 中的表执行更新操作时遇到 ConditionalCheckFailedException

转载 作者:行者123 更新时间:2023-12-05 01:42:39 29 4
gpt4 key购买 nike

我正在尝试使用 coveritlive 聊天系统创建虚假的观众应用程序。为此,我创建了不同的 lambda 函数,一种用于发布评论,一种用于获取项目 ID,一种用于添加对评论的回复。但是为了实现回复服务,我需要获取评论的 item_id,我可以通过调用 coveritlive.com 的事件/数据 API 来获取它。但是在 Amazon DynamoDB 中执行更新操作时出现以下异常。我不知道为什么会显示此异常。另外我想知道是否有任何可用的批量更新功能。请帮我解决这个问题。

ConditionalCheckFailedException: The conditional request failed at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:48:27) at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20) at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:
06179d64-8906-11e8-bc53-f1cb2c5efa4e { ConditionalCheckFailedException: The conditional request failed
at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:48:27)
at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:683:14)
at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)
at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)
at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10
at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)
at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:685:12)
at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:115:18)
message: 'The conditional request failed',
code: 'ConditionalCheckFailedException',
requestId: 'JVQV9VI69F3T2UDG6388RLDPFBVV4KQNSO5AEMVJF66Q9ASUAAJG',
statusCode: 400,
retryable: false,
retryDelay: 4.294909454040329

这是我用于更新的代码:

function updateItemId(id,itemId,docClient) {
var updateParams = {
TableName:"comments",
Key: {
Id : Number(id)
},
UpdateExpression: "set ItemId = :ItemId",
ConditionExpression: "ItemId = :x",
ExpressionAttributeValues:{
":ItemId":Number(itemId),
":x":0
},
ReturnValues:"UPDATED_NEW"
};
docClient.update(updateParams,function(err,data){
if(err) {
console.log(err);
}
else{
console.log(data);
}
});
}

我正在尝试通过频繁调用来替换 ItemId。

最佳答案

原因是匹配key的item中的"ItemId"不等于0,所以会抛出ConditionalCheckFailedException异常。

如果为什么不匹配并不重要,您需要做的就是捕获并忽略它。

if (err.code === 'ConditionalCheckFailedException') {
// nerver mind.
}

关于javascript - 我在使用 Node js 对 dynamoDB 中的表执行更新操作时遇到 ConditionalCheckFailedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51365148/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com