Я новичок ie за nodejs. У меня очень простая таблица DynamoDB с именем IdCount
со строковым первичным ключом, id
(строка).
Я хочу использовать atomi c показано увеличение здесь , но включая несуществующие ключ.
Обратите внимание, что я использовал поле count
(N
: число).
Мой код:
const AWS = require('aws-sdk');
const ddb = new AWS.DynamoDB.DocumentClient();
async function increaseIdCounter(id) {
var table = "IdCount";
var params = {
TableName:table,
Key:{
"id": id
},
UpdateExpression: "Set count = if_not_exists(count, :zero) + :increase",
ExpressionAttributeValues: {
":increase": { "N": "1"},
":zero": { "N": "0"}
},
ReturnValues: "UPDATED_NEW"
};
var res = ddb.update(params, function(err, data) {
if (err) {
console.error("failed to update ", id);
} else {
console.log("Returned new value: ", data.Attributes.count);
}
});
return res;
}
exports.handler = async (event) => {
var re = await increaseIdCounter(event);
const response = {
statusCode: 200,
body: JSON.stringify(re.Attributes.count),
};
return response;
};
Из этого кода, из AWS лямбда-консоль, я получил:
Response:
{
"errorType": "TypeError",
"errorMessage": "Cannot read property 'count' of undefined",
"trace": [
"TypeError: Cannot read property 'count' of undefined",
" at Runtime.exports.handler (/var/task/index.js:33:52)"
]
}
Любое предложение будет очень полезным. Спасибо.