【问题标题】:DynamoDB update error Invalid UpdateExpression: An expression attribute value used in expression is not definedDynamoDB 更新错误 Invalid UpdateExpression:未定义表达式中使用的表达式属性值
【发布时间】:2016-10-04 16:04:59
【问题描述】:

我正在尝试对 DynamoDB 表执行更新。

代码是(Node.js):

    let params = {
        TableName: Organizations.Table,
        Key: {
            'ID': event.ID
        },
        UpdateExpression: 'SET #OrgName = :org, #Description = :desc',
        ExpressionAttributeNames: {
            '#OrgName': 'OrgName',
            '#Description': 'Description'
        },
        ExpressionAtributeValues: {
            ':org': event.OrgName,
            ':desc': event.Description
        },
        ReturnValues: 'UPDATED_NEW'
    };
    this.docClient.update(params, (err, data) => {
        if (err) {
            return cb(err);
        }
        return cb(null, data);
    });

事件对象具有所需的所有属性。

执行后出现错误:

无效的UpdateExpression:一个表达式属性值用于 表达式未定义;属性值::desc

我只是按照 DynamoDB 文档中的示例进行操作。 当我更改设置值的顺序时,例如到SET #Description = :desc, #OrgName = :org 我得到的错误将是关于属性值:org。我还尝试显式指定表达式属性值,但没有帮助。

我不知道哪里出了问题。

有人可以帮我吗?

【问题讨论】:

  • 您确定该事件已定义吗?在调用 docClient.update(..) 之前添加一个 console.log(JSON.stringify(params))
  • 我认为下面 notionquest 的回答解决了这个问题。

标签: amazon-dynamodb


【解决方案1】:

ExpressionAtributeValues 中存在拼写错误(即“t”缺失)导致问题。

请尝试以下。它应该可以工作。

UpdateExpression : "SET #OrgName = :org, #Description = :desc",
    ExpressionAttributeNames: {
        '#OrgName' : 'OrgName',
        '#Description' : 'Description'
    },
    ExpressionAttributeValues: {':org' : 'new org value', 
        ':desc' : 'new desc value'          
    },
    ReturnValues: 'UPDATED_NEW'

【讨论】:

    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 2016-07-29
    • 2016-04-13
    相关资源
    最近更新 更多