Heim >Backend-Entwicklung >Golang >Golang SDK für Dynamodb: ReturnValuesOnConditionCheckFailure gibt keine Details zur Bedingung zurück, wenn die Bedingung chcekfailure auftritt
Der PHP-Editor Xiaoxin stellt Ihnen eine wichtige Funktion im Golang SDK für Dynamodb vor: ReturnValuesOnConditionCheckFailure. Diese Funktion schützt vertrauliche Daten, indem keine detaillierten Informationen über die Bedingung zurückgegeben werden, wenn die Bedingungsprüfung fehlschlägt. Mithilfe dieser Funktion können Entwickler Fehler bei der Zustandsprüfung sicherer behandeln und die Anwendungszuverlässigkeit verbessern. In diesem Artikel werden wir uns mit der Verwendung und den Vorteilen dieser Funktion befassen, um Entwicklern zu helfen, sie besser zu verstehen und auf tatsächliche Projekte anzuwenden.
Ich verwende Golang SDK https://pkg.go.dev/github.com/aws/[email protected]/ zum Debuggen von Bedingungen, um Fehler zu überprüfen und den Grund für einen einzelnen Schreibvorgang herauszufinden Meldung „Vorgang fehlgeschlagen“, aber ich sehe nur die Fehlermeldung Message_: „Bedingte Anforderung fehlgeschlagen“. Bei Verwendung des Parameters ReturnValuesOnConditionCheckFailure: ALL_OLD in UpdateItemInput werden keine zusätzlichen Informationen zur konkreten Ursache bereitgestellt. Bei TransactWriteItems kann ich genau erkennen, warum die Bedingungsprüfung bei Verwendung derselben Parameter fehlgeschlagen ist. Wie kann ich diese Details für einen einzelnen Schreibvorgang abrufen? Referenz: https://aws.amazon.com/about-aws/whats-new/2023/06/amazon-dynamodb-cost-failed-conditional-writes Syntax, die ich verwende:
input := &dynamodb.UpdateItemInput{ TableName: aws.String("DummyTable"), Key: keyAttr, ExpressionAttributeValues: updateExpr.Values(), ExpressionAttributeNames: updateExpr.Names(), ConditionExpression: updateExpr.Condition(), ReturnValues: aws.String(dynamodb.ReturnValueAllOld), UpdateExpression: updateExpr.Update(), ReturnValuesOnConditionCheckFailure: aws.String(dynamodb.ReturnValuesOnConditionCheckFailureAllOld), } output, err := dl.ddbI.UpdateItem(input)
Das Element sollte sich innerhalb der Fehlerkomponente befinden, normalerweise in error.response.Item
.
Zum Beispiel in Python:
except botocore.exceptions.ClientError as error: if error.response["Error"]["Code"] == "ConditionalCheckFailedException": print("The conditional expression is not met") current_value = error.response.get("Item")
Hinweis: Wenn Sie DynamoDB Local verwenden, ist diese Funktion noch nicht vorhanden
Das obige ist der detaillierte Inhalt vonGolang SDK für Dynamodb: ReturnValuesOnConditionCheckFailure gibt keine Details zur Bedingung zurück, wenn die Bedingung chcekfailure auftritt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!