【发布时间】:2021-10-10 10:59:51
【问题描述】:
{
"pk": "USER-12560000000",
"sk": "USER",
"data": {
"name": "George", //I want to modify the value of this attribute
"updatedAt": Date.now() // I want to add this attribute to the data field
}
}
我一直在 updateExpression 下面尝试这个,但由于某种原因,它甚至没有给出关于 cloudwatch 有什么问题的线索。在下面的代码中,我只是尝试更新 displayName 属性的值,不确定如何添加额外属性的代码。 cloudwatch 日志也不会打印错误原因。我已经阅读了有关 aws 的文档以及其他一些 stackoveflow 帖子。我无法完成这项工作。
主 Lambda 处理程序 -
const updateUser = require('./user-queries/updateUser');
exports.handler = async (event) => {
var userId = event.arguments.userId;
var name = event.arguments.name;
var avatarUrl = event.arguments.avatarUrl;
console.log(event.info.fieldName);
switch(event.info.fieldName) {
case "updateUser":
return updateUser(userId, name, avatarUrl);
}
};
const AWS = require("aws-sdk")
AWS.config.update({ region: "ca-central-1" })
const dynamoDB = new AWS.DynamoDB.DocumentClient()
async function updateUser(userId, name, avatarUrl) {
dynamoDB
.update({
TableName: "Bol-Table",
Key: {
pk: "USER-12560000000",
sk: "USER",
},
UpdateExpression: `set data = :data`,
ExpressionAttributeValues: {
":data": {
"name": "Test"
},
},
})
.promise()
.then(data => console.log(data.Attributes))
.catch(console.error)
}
module.exports = updateUser;
这是在 cloudwatch 中打印出来的内容以及一些账单信息 2021-10-09T16:25:15.527Z b1a1e4cb-6001-415c-82a3-cfdc90413e4e 信息 USER-12560000000 Sam www.bol.com
【问题讨论】:
-
你想如何运行它?作为 AWS Lambda 函数?
-
没错,我正在从 graphql api 调用 lambda 函数
-
您的代码没有定义 AWS Lambda 处理程序。它不是有效的 Lambda 函数。你包括你的整个代码吗? Lambda 函数的日志实际上显示了什么?
-
我已将 lambda 函数添加到原始帖子以及 cloudwatch 日志中
-
投反对票是因为您没有提供调试问题所需的所有信息,包括所有代码和日志。我认为您需要将
await添加到 updateUser 调用中。也可能是dynamodb.update()电话。
标签: node.js amazon-web-services aws-lambda amazon-dynamodb