当前位置: 首页 > 知识库问答 >
问题:

DynamoDB更新错误无效UpdateExpression:未定义表达式中使用的表达式属性值

赵永逸
2023-03-14

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

    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);
    });

我搞不清楚哪里出了问题。

有人能帮帮我吗?

共有1个答案

宿嘉庆
2023-03-14

expressionatributeValues中有拼写错误(即not'missing),这导致了问题。

请试试下面的。应该管用。

UpdateExpression : "SET #OrgName = :org, #Description = :desc",
    ExpressionAttributeNames: {
        '#OrgName' : 'OrgName',
        '#Description' : 'Description'
    },
    ExpressionAttributeValues: {':org' : 'new org value', 
        ':desc' : 'new desc value'          
    },
    ReturnValues: 'UPDATED_NEW'
 类似资料:
  • 下面是我正在使用的正则表达式的最新版本,它抛出了错误“Invalid regular expression” XSD:正则表达式在位置4验证失败:当前选项设置不支持此表达式。 我在xsd文件中得到了这个异常,我正在message broker(IIB)中开发这个xsd。有谁能帮我解决这个问题吗?

  • 我试图调试一个旧的jsp站点,所以我在运行Windows7的本地机器上安装了tomcat 7和Netbean IDE 7.2.1,并设置了一切。但是当我运行它时,我得到一个错误: SEVERE: Servlet.service()为servlet jsp抛出异常org.apache.jasper.JasperExcture: /pages/caselisting.jsp(行: 133,列: 35)

  • 我尝试使用表达式更新Dynamo表,我尝试动态生成键。问题是,如果表达式中有空格,则表达式的计算结果将不正确。 以下是我的更新实现: 如果我打印update_expression和expression_attribute_values的值expression_attribute_names我得到以下输出。update_expression expression_attribute_values 表

  • 接下来我们来看看属性表达式。在之前的例子中,属性表达式只涉及到被管理的实体类的直接属性,在创建查询时我们已经确保解析出的属性是被管理实体类的属性之一。实际上,我们可以定义嵌套属性。假设Person类有一个Address,Address中又有ZipCode。在这种情况下,下面方法的方法名会通过x.address.zipCode来检索属性。 List<Person> findByAddressZipC

  • 我使用Spring boot和Thymeleaf模板引擎,并尝试使用th:classappend属性为添加可选的“has error”类 但是我有这个错误 无法使用表达式“*”绑定表单错误。请检查此表达式是否在适当的上下文中执行(例如,具有th:object属性的a) 我的控制器方法 我做错了什么?

  • 正如前面的例子所示,属性表达式只能引用托管实体的直接属性。在查询创建的时候你已确认解析的属性是托管实体类的属性之一。然而你也能通过遍历嵌套属性来定义约束。假设一个Person拥有含ZipCode的Address。在这个方法名称中 List<Person> findByAddressZipCode(ZipCode zipCode); 创建了一个属性遍历x.address.zipCo