amazon-web-services - 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"
}
}
解决方案
推荐阅读
- php - 如何使用 PHP 从 IP 地址和 ipv6 中删除端口号?
- vue.js - Vue-router 使用参数模式
- c++ - 无法将值转换为mysql
- python - 来自 usnews.com 的 python 请求超时其他网站工作正常
- html - Bootstrap4 Accordion - 在不使用 JavaScript 的情况下全部折叠
- typescript - 在 TypeScript 中,如何确保文字类型读/写对应?
- azure - 不能使用从 cosmos db 到 mongoexport 的连接字符串?
- jquery - 在 Jquery 中使用正则表达式替换短语中的任何单词
- datatables - 呈现为html元素时如何更新行
- jsp - 如何使用 JSP 在登录中创建 base64_encode