You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何DynamoDB的TransactWriteItems无法更新嵌套对象?

问题原因及解决方案

这个报错和TransactWriteItems本身无关,是你传入的参数存在明显的不匹配问题:

  • 表达式属性名不匹配
    UpdateExpression里用到了#manualCost和#useAutoCost两个占位符,但你的ExpressionAttributeNames里只定义了#insp、#manualImpact、#useAutoImpact,完全没有这两个占位符的映射关系,DynamoDB自然找不到对应的属性名。

  • 表达式属性值不匹配
    UpdateExpression里赋值用的是:manualCost和:useAutoCost,但ExpressionAttributeValues里提供的却是:manualImpact和:useAutoImpact,同样存在名称不对应问题。

你说单独用Update操作能正常执行,应该是单独执行时的参数是正确的,而批量生成TransactWriteItems参数时出现了拼写/映射错误。TransactWriteItems中的Update语法和独立的Update操作完全一致,支持嵌套对象更新,只要参数正确就能正常执行。

修正后的参数示例(根据你的意图调整):

{"TransactItems": [
    {
        "Update": {
            "TableName": "XXXXtest",
            "Key": {
                "windFarmTurbineKey": "XXXXX1",
                "key": "testxxx"
            },
            "UpdateExpression": "SET observations.#insp.#manualCost = :manualCost, observations.#insp.#useAutoCost = :useAutoCost",
            "ExpressionAttributeNames": {
                "#insp": "2022-08-18-2",
                "#manualCost": "manualCost",
                "#useAutoCost": "useAutoCost"
            },
            "ExpressionAttributeValues": {
                ":manualCost": 800,
                ":useAutoCost": false
            }
        }
    }
]}

核心要求是保证UpdateExpression里的所有占位符,在ExpressionAttributeNames和ExpressionAttributeValues中都有对应的正确映射。

内容的提问来源于stack exchange,提问作者Meli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:42:40