DynamoDB UpdateItem Golang失败

问题描述 投票:0回答:1

我正在使用DynamoDB Go SDK进行CRUD操作。我验证了PutItemGetItem调用是否正常。但是,当我使用UpdateItem更新某些属性时,它将失败。我将其范围缩小到特定的属性,该属性以纪元格式存储当前时间戳。

    updateItem := &dynamodb.UpdateItemInput{
        TableName:aws.String(tableName),
        ExpressionAttributeValues: map[string]*dynamodb.AttributeValue{
            ":r": {
                S:aws.String("Renamed"),
            },
            ":rp": {
                S: aws.String("RenamingParty"),
            },
            ":rr": {
                S: aws.String("RenameReason"),
            },
            "rt": {
                N: aws.String(strconv.FormatInt(time.Now().Unix(), 10)),
            },
        },
        Key: map[string]*dynamodb.AttributeValue{
            "pKey": {
                S: aws.String(pKey),
            },
            "rKey": {
                S:aws.String(rKey),
            },
        },
        ReturnValues:aws.String("ALL_NEW"),
        UpdateExpression:aws.String("set RenameStatus = :r, RenamingParty = :rp, RenameReason = :rr RenameTime = :rt"),
    }

    _, err := svc.UpdateItem(updateItem)

返回错误

无法更新项目:%v ValidationException:ExpressionAttributeValues包含无效的密钥:语法错误;关键:“ rt”状态码:400,请求ID:

go amazon-dynamodb unix-timestamp
1个回答
0
投票

似乎您的属性rt缺少:-> :rt:)

© www.soinside.com 2019 - 2024. All rights reserved.