【问题标题】:How to delete an element from a DynamoDB List in AWS Lambda?如何从 AWS Lambda 的 DynamoDB 列表中删除元素?
【发布时间】:2018-10-10 00:26:10
【问题描述】:

here is the image of data in dynamodb

我想从 favRest 中删除元素,我只需要给出值,它应该这样做这是我的 lambda 函数

var AWS = require('aws-sdk');

const docClient = new AWS.DynamoDB.DocumentClient({ region: 'us-east-1' });

exports.handler = (event, context, callback) => {
    const params = {
        TableName : 'User',
        Key:{
            "id": event.user_id,
        },
        UpdateExpression: "DELETE favRest :p",
        ExpressionAttributeValues: {
            ':p': event.place_id
        },
        ReturnValues: "ALL_NEW" 
    }

    // TODO: Implementation...

    docClient.update(params, (err, data) => {
        if (err) {
            console.log("Unable to update item. Error: " + err.message);
            callback(err);
        } else {
            console.log("UpdateItem succeeded.");
            callback(null, data);
        }
    });
};

但是,它给了我以下错误:

"{\n  \"message\": \"Invalid UpdateExpression: Incorrect operand type for operator or function; operator: DELETE, operand type: STRING\",\n  \"code\": \"ValidationException\",\n  \"time\": \"2018-04-29T18:49:58.628Z\",\n  \"requestId\": \"7TDRI4TOF9S71OUJDEKMIOA40RVV4KQNSO5AEMVJF66Q9ASUAAJG\",\n  \"statusCode\": 400,\n  \"retryable\": false,\n  \"retryDelay\": 35.34160854636804\n}"

我该怎么办

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-dynamodb aws-sdk


    【解决方案1】:

    DELETE 操作仅支持 Set 数据类型。您的favRest 属性类型为List

    如果您想将favRest 属性类型保留为List,您可以使用REMOVE 从列表中删除单个元素(知道元素的索引):

    UpdateExpression: "REMOVE favRest[:index]"
    

    或者您可以使用SET 将整个列表替换为新值:

    UpdateExpression: "SET favRest = :newList"
    

    否则,您可以将favRest 属性类型更改为Set

    Update Expressions

    【讨论】:

      猜你喜欢
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 2010-10-13
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      相关资源
      最近更新 更多