Rumah  >  Artikel  >  pembangunan bahagian belakang  >  SDK Golang untuk Dynamodb: ReturnValuesOnConditionCheckFailure tidak mengembalikan butiran tentang keadaan apabila keadaan chcekfailure berlaku

SDK Golang untuk Dynamodb: ReturnValuesOnConditionCheckFailure tidak mengembalikan butiran tentang keadaan apabila keadaan chcekfailure berlaku

PHPz
PHPzke hadapan
2024-02-10 18:45:18541semak imbas

适用于 Dynamodb 的 Golang SDK:ReturnValuesOnConditionCheckFailure 不返回有关条件chcekfailure 发生时的条件的详细信息

Editor php Xiaoxin memperkenalkan kepada anda ciri penting dalam SDK Golang untuk Dynamodb: ReturnValuesOnConditionCheckFailure. Ciri ini melindungi data sensitif dengan tidak mengembalikan maklumat terperinci tentang keadaan apabila pemeriksaan syarat gagal. Menggunakan ciri ini, pembangun boleh mengendalikan kegagalan pemeriksaan keadaan dengan lebih selamat dan meningkatkan kebolehpercayaan aplikasi. Dalam artikel ini, kami akan menyelidiki penggunaan dan kelebihan ciri ini untuk membantu pembangun memahami dan menerapkannya dengan lebih baik pada projek sebenar.

Kandungan soalan

Saya menggunakan golang sdk https://pkg.go.dev/github.com/aws/[email protected]/ untuk syarat penyahpepijatan untuk menyemak ralat dan mengetahui sebab mengapa satu penulisan mesej operasi gagal, tetapi saya hanya dapat melihat ralat Message_: "Permintaan bersyarat gagal". Tiada maklumat tambahan tentang sebab khusus diberikan apabila menggunakan parameter ReturnValuesOnConditionCheckFailure: ALL_OLD dalam UpdateItemInput. Untuk TransactWriteItems, saya dapat melihat dengan tepat mengapa semakan syarat gagal apabila menggunakan parameter yang sama. Bagaimanakah saya boleh mendapatkan butiran ini untuk satu operasi tulis? Rujukan: https://aws.amazon.com/about-aws/whats-new/2023/06/amazon-dynamodb-cost-failed-conditional-writes Sintaks yang saya gunakan:

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)

Penyelesaian

Item hendaklah terletak di dalam komponen ralat, biasanya dalam error.response.Item.

Sebagai contoh dalam 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")

Nota: Jika anda menggunakan DynamoDB Local, ciri ini belum wujud lagi

Atas ialah kandungan terperinci SDK Golang untuk Dynamodb: ReturnValuesOnConditionCheckFailure tidak mengembalikan butiran tentang keadaan apabila keadaan chcekfailure berlaku. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam