我编写了一个异步函数,它更新 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文档中检查与此错误相关的内容时,它说当表没有要更新的此属性时抛出错误。但是当我检查表格时收到此错误,我看到该属性已更新正确的值
更新表达式中提供的文档路径对于更新无效
此异常意味着您尝试更新根不存在的 JSON 路径。
这意味着您更新的项目上不存在
InvAttr
,导致失败。