使用带有 Node.js 的 Lambda 函数更新 DynamoDB table
Update DynamoDB table using Lambda Function with Node.js
我正在尝试更新包含 ID 0c876d54-195a-46d1-954c-80477e78e70e
的现有 DynamoDB table 记录并将 status
列从 true
设置为 false
.我正在使用带有 Node.js 的 Lambda 函数来执行更新。函数 returns null 似乎很少有文档来执行如此简单的任务。这是我尝试过的:
const AWS = require('aws-sdk');
const ddb = new AWS.DynamoDB.DocumentClient({ region: 'us-east-1' });
exports.handler = async(event, context, callback) => {
await updateTable().then(() => {
callback(null, {
statusCode: 201,
body: '',
headers: {
'Access-Control-Allow-Origin': '*'
}
});
}).catch((err) => {
console.error(err)
})
};
function updateTable() {
const params = {
TableName: "MyTable",
Key: {
"ID": "0c876d54-195a-46d1-954c-80477e78e70e"
},
UpdateExpression: "SET status = :status",
ExpressionAttributeValues: {
":status": "FALSE"
}
}
return ddb.update(params).promise();
}
在使用 async
时不要使用 .then().catch()
和 callback
模式。当您使用 async
Lambda 将在代码路径完成后立即退出,这将在您点击 .then()
.
之前
const AWS = require('aws-sdk');
const ddb = new AWS.DynamoDB.DocumentClient({ region: 'us-east-1' });
exports.handler = async(event, context) => {
try {
await updateTable();
return {
statusCode: 201,
body: '',
headers: {
'Access-Control-Allow-Origin': '*'
}
}
}
catch (err) {
console.error(err);
}
};
function updateTable() {
const params = {
TableName: "MyTable",
Key: {
"ID": "0c876d54-195a-46d1-954c-80477e78e70e"
},
UpdateExpression: "SET status = :status", //status is a reserved ATTRIBUTE
ExpressionAttributeValues: {
":status": "FALSE"
}
}
return ddb.update(params).promise();
}
我正在尝试更新包含 ID 0c876d54-195a-46d1-954c-80477e78e70e
的现有 DynamoDB table 记录并将 status
列从 true
设置为 false
.我正在使用带有 Node.js 的 Lambda 函数来执行更新。函数 returns null 似乎很少有文档来执行如此简单的任务。这是我尝试过的:
const AWS = require('aws-sdk');
const ddb = new AWS.DynamoDB.DocumentClient({ region: 'us-east-1' });
exports.handler = async(event, context, callback) => {
await updateTable().then(() => {
callback(null, {
statusCode: 201,
body: '',
headers: {
'Access-Control-Allow-Origin': '*'
}
});
}).catch((err) => {
console.error(err)
})
};
function updateTable() {
const params = {
TableName: "MyTable",
Key: {
"ID": "0c876d54-195a-46d1-954c-80477e78e70e"
},
UpdateExpression: "SET status = :status",
ExpressionAttributeValues: {
":status": "FALSE"
}
}
return ddb.update(params).promise();
}
在使用 async
时不要使用 .then().catch()
和 callback
模式。当您使用 async
Lambda 将在代码路径完成后立即退出,这将在您点击 .then()
.
const AWS = require('aws-sdk');
const ddb = new AWS.DynamoDB.DocumentClient({ region: 'us-east-1' });
exports.handler = async(event, context) => {
try {
await updateTable();
return {
statusCode: 201,
body: '',
headers: {
'Access-Control-Allow-Origin': '*'
}
}
}
catch (err) {
console.error(err);
}
};
function updateTable() {
const params = {
TableName: "MyTable",
Key: {
"ID": "0c876d54-195a-46d1-954c-80477e78e70e"
},
UpdateExpression: "SET status = :status", //status is a reserved ATTRIBUTE
ExpressionAttributeValues: {
":status": "FALSE"
}
}
return ddb.update(params).promise();
}