aws-lambda - 将 Lambda 同步转换为异步事件问题
问题描述
我正在尝试使用无服务器框架制作基本的待办事项应用程序。我的同步 lambda 函数工作正常,并将我的任务和任务详细信息存储在 dynamodb 表中。我决定将我的同步 lambda 函数转换为异步函数。我正在使用 Postman 测试 api。但是现在我有事件触发问题,它不存储我的taskDetails
,它只存储我的任务。在我的邮递员中,我可以看到事件触发器,这是post-method,这就是我得到的。我不明白我在这里做错了什么。附言。我是 Lambda 的新手。
这是同步 lambda 函数
'use strict'
const AWS = require('aws-sdk');
const uuid = require('uuid');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports.createTodo = (event, context, callback) => {
const datetime = new Date().toISOString();
const data = JSON.parse(event.body);
const params = {
TableName: 'todos',
Item: {
id: uuid.v1(),
task: data.task,
taskDetails: data.taskDetails,
done: false,
createdAt: datetime,
updatedAt: datetime
}
};
dynamoDb.put(params, (error, data) => {
if (error) {
console.error(error);
callback(new Error(error));
return;
}
const response = {
statusCode: 201,
body: JSON.stringify(data.Item)
};
callback(null, response);
});
}
这是我的异步并放入 try catch,但出现错误。
'use strict'
const AWS = require('aws-sdk');
const uuid = require('uuid');
const dynamoDb = new AWS.DynamoDB.DocumentClient();
module.exports.createTodo = async event => {
const datetime = new Date().toISOString();
const data = JSON.parse(event.body);
const params = {
TableName: 'todos',
Item: {
id: uuid.v1(),
task: data.task,
taskdetails: data.taskdetails,
done: false,
createdAt: datetime,
updatedAt: datetime
}
};
try {
let response = await dynamoDb.put(params).promise();
return {
statusCode: 200,
body: JSON.stringify(data),
}
} catch (error) {
console.log(error);
}
};
解决方案
在您的同步代码中,您使用的taskDetails
地方与异步实现中的情况一样taskdetails
。
我假设在您的 get 方法中您正在从中读取数据taskDetails
,因此您的 get api 没有返回taskDetails
响应。
转到 dynamodb 控制台并检查您的 id,您将能够在taskdetails
属性中看到数据。
推荐阅读
- swift - hello world 项目的 safari 应用程序扩展在几秒钟后崩溃
- android - 使用上游 Github Repo 使 Android Studio 保持最新状态
- c++ - 切换语句读取 C++ 中的每个输入
- javascript - 一定间隔后无法设置 document.title
- bash - 向 bash 命令发送信号
- ssis - 使用 getdate 时的 SSIS 有没有办法删除毫秒?
- css - 合并声明块
- python-3.x - Selenium:复选框不可交互(Python)
- c++ - 在 C++ 中将 128 位整数表示为两个 64 位整数
- apache-kafka - 与 Kafka 一起分发的 Zookeeper 的错误日志文件目的地在哪里?