У меня проблемы с удалением атрибута элемента динамодаба с помощью команды UpdateItem
: https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/expression/#Builder .WithUpdate
expr := expression.Set(
expression.Name("my_attribute_a"),
expression.Value(""),
).Set(
expression.Name("my_attribute_b"),
expression.Value(""),
)
update, err := expression.NewBuilder().
WithUpdate(expr).
Build()
if err != nil {
return fmt.Errorf("failed to build update expression: %v", err)
}
input := &dynamodb.UpdateItemInput{
TableName: &ddb.emailAccountTableName,
ExpressionAttributeNames: update.Names(),
ExpressionAttributeValues: update.Values(),
Key: map[string]*dynamodb.AttributeValue{
"id": {
S: &id,
},
},
UpdateExpression: update.Update(),
ReturnConsumedCapacity: aws.String(dynamodb.ReturnConsumedCapacityTotal),
}
fmt.Println(input.String())
result, err := ddb.svc.UpdateItem(input)
Результат выполнения выше:
{
ExpressionAttributeNames: {
#1: "my_attribute_a",
#0: "my_attribute_b"
},
ExpressionAttributeValues: {
:0: {
NULL: true
},
:1: {
NULL: true
}
},
Key: {
id: {
S: "38zqtaNezbB8eZw4pbJKm7"
}
},
ReturnConsumedCapacity: "TOTAL",
TableName: "my-table",
UpdateExpression: "SET #0 = :0, #1 = :1\n"
}
И в результате атрибуты для элемента устанавливаются на true
. Я хочу, чтобы атрибуты были удалены. Я пытался использовать nil
, но это дает тот же результат, и expression.Null
просто устанавливает строку в значение NULL