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

如何使用Dynamo的单个UpdateExpression设置和删除

鲁炳
2023-03-14

我试图使用updateExpression更新一个项,我想编辑一个属性并删除同一对象上的另一个属性,但我得到以下错误:

UpdateExpression无效:语法错误;令牌:EOF near:“attributeToDelete”

我必须承认,我编写更新表达式时猜测了正确的使用方法(失败)。下面是代码片段:

dynamodb.updateAsync({
    TableName: `myTable`,
    Key: { id: req.params.id },
    UpdateExpression: 'SET attributeToEdit = :newValue DELETE attributeToDelete',
    ExpressionAttributeValues: { ':newValue': 'valueToSet' },
  })

当我想包含多个操作时,我应该如何编写UpdateExpress?(其中操作是-

共有2个答案

张昊穹
2023-03-14

我为此挣扎了很长一段时间,所以我认为第二个例子可能对未来的搜索者有所帮助。本例使用CakePHP、Marshal JSON、SET和ADD,并包含变量,以显示获得所需内容的两种不同方式。显然,你也会在调用它的整个函数中传递所有变量。

    $key = $this->marshaler->marshalJson('
        {
            "field_one": ' . $variableOne . '
        }
    ');

    if ($criteriaOne === null) {
        $add = $this->marshaler->marshalJson('
            {"0":{
                "field_two": ' . $variableTwo . ',
                "field_three": "' . $variableThree . '"
            }}
        ');
    } else {
        $add = $this->marshaler->marshalJson('
            {"0":{
                "field_two": ' . $variableTwo . ',
                "field_three": "' . $variableThree . '"
                "field_four": "null"
            }}
        ');
    }

    $eav = [
        ":vals" => [
            "L" => [$add[0]]
        ],
        ":vals1" => [
            "NS" => ["$variableTwo"]
        ]
    ];

    $ean = [
        "#co" => "column_one",
        "#ct" => "column_two"
    ];

    return [
        'TableName' => 'Dynamo_Table_Name',
        'Key' => $key,
        'UpdateExpression' =>
            'SET #co = list_append(:vals, #co) ADD #ct :vals1',
        'ExpressionAttributeNames' => $ean,
        'ExpressionAttributeValues' => $eav,
        'ReturnValues' => 'ALL_NEW'
    ];
宓和同
2023-03-14

使用删除而不是删除<代码>删除用于从集合中删除元素。

 UpdateExpression: 'SET attributeToEdit = :newValue REMOVE attributeToDelete',

移除-从项目中移除一个或多个属性。

 类似资料:
  • 我有访问密钥、密钥、区域和dynamo DBendpoint,通过它们我可以连接到数据库,并且我在应用程序中保留了配置。属性文件。现在的要求是不在应用程序中保留访问密钥和密钥。属性文件并遵循AWS STS中的Web标识令牌。我已从应用程序中删除访问密钥和密码。属性文件,并具有以下配置。当我启动应用程序时,我收到以下消息 考虑定义COM类型的bean。亚马逊。服务。发电机BV2。AmazonDyna

  • 问题内容: 我想轻松删除多个表,而无需在删除查询中实际列出表名,并且要删除的表的前缀为“ wp_” 问题答案: 只需分享其中一种解决方案: mysql> SELECT CONCAT(“ DROP TABLE”, GROUP_CONCAT(TABLE_NAME))as stmt 从information_schema.TABLES WHERE TABLE_SCHEMA =“ your_db_name

  • 我正在使用Kafka(与雅虎Kafka经理) 我想为重置消息设置一个规则,或者他们如何称呼它:“分区偏移量的总和” 在server.properties上是否有滚动kafka偏移量的参数? (即:我想重置或删除所有影响邮件保留的参数) 谢谢。

  • 本文向大家介绍如何使用单个Apache服务器设置多个SSL主机,包括了如何使用单个Apache服务器设置多个SSL主机的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将向您展示如何仅使用单个IP地址在带有Apache的CentOS上设置多个SSL证书。通常,网站管理员被限制为每个插座使用具有IP的单个SSL证书,这将给公司带来大量投资。此限制可能导致他们购买HTTP网站的多个IP地址作为其

  • 问题内容: 我正在设置asp.net菜单的样式,并且试图了解StaticSelectedStyle-CssClass和StaticHoverStyle- CssClass参数的含义。 我的理解是,只要需要,使用这些参数定义的样式就会作为CSS类应用于相关元素。所以我创建菜单如下: 它适用于StaticMenuStyle-CssClass和StaticMenuStyle- CssClass(将这些类

  • 问题内容: 我正在使用sqlite4java启动一个简单的Java测试项目,并使用Java进行构建。 我可以轻松地下载核心sqlite4java库,但是我不确定哪种最好的方式(任意!)来获取下载本地库并将它们放在正确位置的好处。 这是我的build.gradle文件: 但是,当我运行一个简单的测试时,我得到: (我是从IntelliJ内部构建的,但是我正在使用gradle构建选项-因此,我认为运行