首页 > 解决方案 > DynamoDB 中的 AWS Lambda 更新对象

问题描述

我试图从 DynamoDB 更新对象几个小时,但我无法让它工作。我正在使用 DocumentClient 库及其方法 update()。当我用 API Gateway 测试它时,我收到了这个错误:

{
  "errorType": "TypeError",
  "errorMessage": "Cannot read property '_id' of undefined",
  "trace": [
    "TypeError: Cannot read property '_id' of undefined",
    "    at Runtime.exports.handler (/var/task/index.js:20:44)",
    "    at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)"
  ]
}

这是我的代码:

exports.handler = (event, context, callback) => {
    console.log(event);
    const id = event.listId;
                
    const params = {
        Key: {
            "ListId": id
        },
        ExpressionAttributeNames: {
          "#name": "Name",
          "#shop": "Shop"
        },
        ExpressionAttributeValues: {
            ":name": event.listName,
            ":shop": {
                "_id": event.listShop._id,
                "name": event.listShop.name,
                "address": event.listShop.address,
                "city": event.listShop.city
            }
        },
        TableName: "mk-lists",
        UpdateExpression: "SET #name = :name, #shop = :shop"
    };
    
    dynamodb.update(params, (err, data) => {
        if(err) {
            console.log(err);
            callback(err);
        } else {
            console.log(data);
            callback(null, data);
        }
    });
};

我在 Lists 表中有 Shop 字段,这是一个对象。此外,当我在 Lambda 函数中对其进行测试时,它正在工作。有人可以帮我弄这个吗?提前致谢。

这是我的请求正文:

{
  "listName": "Lista 13131",
  "listShop": {
    "_id": "933c836c-6868-4f56-a769-d59f5cbb231e",
    "name": "DIS",
    "address": "Podrinska 12",
    "city": "Uzice"
  }
}

标签: amazon-web-servicesaws-lambdaamazon-dynamodb

解决方案


推荐阅读