DynamoDB UpdateException:要更新的属性类型不匹配

DynamoDB UpdateException: Type mismatch for attribute to update

我在 DynamoDB 中有以下记录:

    {
        "BusinessNo": {
            "N": "12345"
        },
        "Metadata": {
            "M": {
                "MimeType": {
                    "S": "audio/wav"
                },
                "FileName": {
                    "S": "00032329.wav"
                },
                "CustomC": {
                    "S": "baz"
                },
                "CustomA": {
                    "S": "foo"
                },
                "CustomB": {
                    "S": "bar"
                },
                "Size": {
                    "S": "3992020323"
                }
            }
        },
        "Id": {
            "S": "f0de8af3-a7f5-4d9b-ad5d-b2f150abd15e"
        },
        "Revision": {
            "N": "2"
        }
    }

但是当我使用来自 nodejs AWS SDK 的 DynamoDB.DocumentClientupdate 方法提交以下内容时(我也尝试过 add 而不是 set):

{
  "TableName": "Storage_FileMetadata",
  "Key": {
    "Id": "f0de8af3-a7f5-4d9b-ad5d-b2f150abd15e",
    "BusinessNo": "12345"
  },
  "ExpressionAttributeNames": {
    "#m": "Metadata",
    "#k": "CustomD",
    "#r": "Revision"
  },
  "ExpressionAttributeValues": {
    ":r": 4,
    ":v": "doo-wop"
  },
  "UpdateExpression": "set #m.#k = :v",
  "ConditionExpression": "#r < :r"
}

我得到以下异常:

{
    "message": "Type mismatch for attribute to update",
    "code": "ValidationException",
    "time": "2016-11-11T18:55:01.543Z",
    "requestId": "b9d78c87-1c4d-400a-8968-d761b657cd53",
    "statusCode": 400,
    "retryable": false,
    "retryDelay": 0
}

我想我遗漏了一些关于 adding/updating 嵌套属性的东西,但在阅读 the docs 之后我无法弄清楚是什么。

您似乎需要发送值 "BusinessNo": "12345" 作为数字

"Key": {
    "Id": "f0de8af3-a7f5-4d9b-ad5d-b2f150abd15e",
    "BusinessNo": 12345
}