Javascript 使用DynamoDB.DocumentClient成功完成TransactionWrite后,ItemCollectionMetrics为空
我正在对DynamoDb执行Javascript 使用DynamoDB.DocumentClient成功完成TransactionWrite后,ItemCollectionMetrics为空,javascript,amazon-web-services,amazon-dynamodb,documentclient,Javascript,Amazon Web Services,Amazon Dynamodb,Documentclient,我正在对DynamoDb执行transactionwrite()指令,并希望返回ItemCollectionMetrics(我在请求中指定ReturnItemCollectionMetrics:'SIZE') 即使在dynamo db表上发生了更改,对象仍返回空{} 有人对此有想法吗 代码 const dynamoResponse = await dynamoDbDocumentClient.transactWrite({ TransactItems: [
transactionwrite
()指令,并希望返回ItemCollectionMetrics
(我在请求中指定ReturnItemCollectionMetrics:'SIZE'
)
即使在dynamo db表上发生了更改,对象仍返回空{}
有人对此有想法吗
代码
const dynamoResponse = await dynamoDbDocumentClient.transactWrite({
TransactItems: [
{
Put: {
TableName: ENV.BLAH_CONTENT_COUNT_MESSAGES_TABLE,
ExpressionAttributeNames : {
'#v' : 'v',
},
ExpressionAttributeValues : {
':v' : blah.v
},
ConditionExpression: '(attribute_exists(blahId) AND #v<>:v) OR attribute_not_exists(blahId)',
Item: {...blahCountMessage}
}
},
{
Update: {
TableName: ENV.BLAH_CONTENT_COUNTS_TABLE,
Key: { id: blahContentCount.id },
ExpressionAttributeNames : {
'#v' : 'v',
'#count' : 'count',
'#contentId': 'contentId'
},
ExpressionAttributeValues : {
':v' : 1,
':count' : deleted ? -1: 1,
':contentId': blahContentCount.contentId,
':defaultNumber': 0
},
ConditionExpression: 'attribute_not_exists(cognitoId)',
UpdateExpression: 'SET #contentId = :contentId, #count = if_not_exists(#count, :defaultNumber) + :count, #v = if_not_exists(#v, :defaultNumber) + :v',
ReturnValuesOnConditionCheckFailure: 'ALL_OLD'
}
}
],
ReturnItemCollectionMetrics: 'SIZE'
}).promise();
谢谢 ReturnItemCollectionMetrics: 有关受操作影响的项集合(如果有)的信息。只有在请求请求时才会返回ItemCollectionMetrics。如果表没有任何本地辅助索引,则不会在响应中返回此信息 Per: 可能是该事务没有更新任何内容,或者您没有LSI 另外值得注意的是:文档中说,对于 “全局表”,我不确定它们是否意味着GSI。。。但我不是 使用LSI,这可能也是没有ItemCollectionMetrics的原因 返回以响应我的事务 如果将参数对象更新为包含
ReturnConsumedCapacity:“TOTAL”
响应对象应如下所示:
[ { TableName: 'table_name',
CapacityUnits: 8,
WriteCapacityUnits: 8 } ] }
您可以将
ReturnItemCollectionMetrics
更改为“无”并共享输出吗?如果我执行console.log(JSON.stringify(dynamoResponse.ItemCollectionMetrics)),我会得到undefined
代码>好。。这只是猜测,但。。尝试删除等待
.promise
好吧,不确定该如何操作。sdk都是基于承诺的,你需要承诺和等待结果。谢谢Chris!我想我错过了文档中的LSI
部分。看起来就是这样!
[ { TableName: 'table_name',
CapacityUnits: 8,
WriteCapacityUnits: 8 } ] }