【发布时间】:2020-06-14 21:18:40
【问题描述】:
我正在尝试使用 Lambda 更新 DynamoDB 表项,当值被硬编码时,下面的代码可以正常工作。
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: "us-east-1"});
exports.handler = (event, callback) => {
const params = {
Key: {
date: event.key1,
},
TableName: "todo-app",
UpdateExpression:"SET task=:t",
ExpressionAttributeValues:{":t":"This is my updated table"},
ReturnValues:"UPDATED_NEW"
};
docClient.update(params, function(err, data) {
if (err) {
console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("UpdateItem succeeded:", JSON.stringify(data, null, 2));
}
});
};
但是,这将始终使用“这是我更新的表”的硬编码值更新字段。
有没有办法可以像这样简单地将“这是我更新的表格”替换为 event.key2:
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: "us-east-1"});
exports.handler = (event, callback) => {
const params = {
Key: {
date: event.key1,
},
TableName: "todo-app",
UpdateExpression:"SET task=:t",
ExpressionAttributeValues:{":t":event.key2},
ReturnValues:"UPDATED_NEW"
};
docClient.update(params, function(err, data) {
if (err) {
console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("UpdateItem succeeded:", JSON.stringify(data, null, 2));
}
});
};
这里是 axios 函数以防万一:
async handleEdit(){
let task = prompt("Enter texty");
await axios.post(
'https://xxxxxxxxx.execute-api.us-east-1.amazonaws.com/default/serverlessToDoFunctionUPDATE',
{ key1: 1591926275608 },
{ key2: task },
);
};
我知道这对你们中的一些人来说可能听起来是一个愚蠢的问题,但我似乎找不到一个简单的工作示例。
如果能提供任何帮助,我将不胜感激。谢谢。
【问题讨论】:
-
您似乎没有提到实际上有一个 API 网关正在调用 Lambda 函数。这是至关重要的信息。您需要添加更多关于 API Gateway 和 Lambda 之间的集成是如何配置的信息。
-
抱歉,我没有意识到这是相关的。 API Gateway 连接到这个 lambda 函数,并且它与 axios API 调用配合得很好。究竟需要哪些信息?
标签: reactjs aws-lambda axios amazon-dynamodb