Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用DynamoDB.DocumentClient成功完成TransactionWrite后,ItemCollectionMetrics为空_Javascript_Amazon Web Services_Amazon Dynamodb_Documentclient - Fatal编程技术网

Javascript 使用DynamoDB.DocumentClient成功完成TransactionWrite后,ItemCollectionMetrics为空

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: [

我正在对DynamoDb执行
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 } ] }