特定の条件の下でアイテムを更新したい場合、UpdateItemが返されたときにアイテムが更新されたかどうかを知りたいと思います。dynamodb updateitem with conditionexpressionアイテムが更新されたかどうかを返す
ドキュメントは私と矛盾しているようです。
このページでは、「条件付き更新」の例では、「更新後に表示されるすべてのアイテムの属性が応答に返されます」というメッセージが表示されます。このページ
:https://godoc.org/github.com/aws/aws-sdk-go/service/dynamodb#UpdateItemOutputそれは私が実際にこれらのいずれかを望んでいない
「彼らはUpdateItem操作の前に現れて、属性値のマップ」属性があると述べています。私が望むのは、更新があったかどうかを示すブールです。
私の脳は今にある場所です:
out, err := db.DynamoDB.UpdateItem(&dynamodb.UpdateItemInput{
TableName: tableName,
Key: map[string]*dynamodb.AttributeValue{
"KeyName": {S: aws.String(keyname)},
},
ExpressionAttributeNames: map[string]*string{
"#lock": aws.String("Lock"),
},
ExpressionAttributeValues: map[string]*string{
":now": aws.String(compfmt(time.Now())),
":promise": aws.String(compfmt(time.Now().Add(30 * time.Second))),
},
ConditionExpression: aws.String("attribute_not_exist(#lock) OR :now > #lock"),
UpdateExpression: aws.String("SET #lock = :promise"),
})
に
Code
をチェックすることです。 – user1431317更新がなければ 'UPDATED_NEW'の結果は空になりますか?それとも、操作後に現在の値を返すのですか? – voutasaurus
あなた自身で試してみる必要がありますが、ドキュメントが正しい場合は、その場合は属性マップが空である必要があります。 – user1431317