即使在异步函数内完成操作后也会出现异常

问题描述 投票:0回答:1

我编写了一个异步函数,它更新 dynamo-db 表属性值,这是我的代码片段

public async Task UpdateCount()
{
    try
    {
        await _dynamoDbService.UpdateItemAsync(new UpdateItemRequest
            {
                TableName = _ledgerSummaryTableName,
                ExpressionAttributeNames = new Dictionary<string, string> { { "#inv", "InvAttr"}, {"#Count", "DetCount"} },
                ExpressionAttributeValues =
                    new Dictionary<string, AttributeValue> { { ":InvDetCount", new AttributeValue { N = "200" } }},
                UpdateExpression = "SET #inv.#Count = :InvDetCount",
                Key = new Dictionary<string, AttributeValue>
                {
                    {"SubsId", new AttributeValue {S = "12345" },
                    {"ItemId", new AttributeValue {S = "1_98765"} }
                }
            });
    }
    catch (AmazonServiceException exception)
    {
        _logger.LogError($"Error: UpdateInvoiceDetailCount operation failed for IndexedLedgerSummary table. " + $"{exception.Message}");

        throw new AuthenticationException(new Fault
        {
            Code = AccountErrorCode.UpdateLedgerSummaryItemFailed,
            Message = "UpdateInvoiceDetailCount operation failed for IndexedLedgerSummary table. "
        }, exception);
    }
}

上述代码的预期是,它将用所需的值更新属性 DetCount。我面临的场景是属性发生更新(我看到新值已更新),但函数仍然抛出 catch 块中的错误。

任何人都可以帮助理解我在这里缺少什么吗?

我遇到的例外是 -

The document path provided in the update expression is invalid for update

当我在aws文档中检查与此错误相关的内容时,它说当表没有要更新的此属性时抛出错误。但是当我检查表格时收到此错误,我看到该属性已更新正确的值

c# .net amazon-dynamodb aws-sdk-net
1个回答
0
投票

更新表达式中提供的文档路径对于更新无效

此异常意味着您尝试更新根不存在的 JSON 路径。

这意味着您更新的项目上不存在

InvAttr
,导致失败。

© www.soinside.com 2019 - 2024. All rights reserved.