Я пытаюсь обновить данные с помощью функции lamda. Я только что создал метод PUT и добавил лямбда-функцию в метод после прочтения документации. Я создал функцию, вот код
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'us-east-2', apiVersion: '2012-08-10'});
AWS.config.update({region: 'us-east-2', apiVersion: '2012-08-10'});
var docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = (event, context, callback) => {
const params = {
TableName: "Would-You-Rather",
Key:{
"QuestionID": "a670b861-8a34-4bda-93e0-8bbf2cd25eb6",
},
UpdateExpression: "set would = :w, rather = :r, wouldClick = :wC, , ratherClick = :rC ",
ExpressionAttributeValues:{
":w": "Working",
":r": "Working",
":wC": 12,
":rC": 1
},
ReturnValues:"UPDATED_NEW"
};
console.log("Updating the item...");
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));
}
});
};
Но когда я тестирую функцию, она показывает
"message": "Invalid UpdateExpression: Syntax error; token: \",\", near: \", , ratherClick\"",
"code": "ValidationException",
Если я обертываю ExpressionAttributes, как это
ExpressionAttributeValues:{
":w": "Working",
":r": "Working",
":wC": "12",
":rC": "1"
},
, тогда отображается эта ошибка
"errorType": "Runtime.UserCodeSyntaxError",
"errorMessage": "SyntaxError: Invalid or unexpected token",
Это мой метод POST, который работает нормально, добавьте это, потому что, возможно, это поможет лучше понять
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({region: 'us-east-2', apiVersion: '2012-08-10'});
exports.handler = (event, context, callback) => {
const params = {
Item: {
"QuestionID": {
S: context.awsRequestId
},
"Would": {
S: event.would
},
"Rather": {
S: event.rather
},
"wouldClick": {
N: event.wouldClick
},
"ratherClick": {
N: event.ratherClick
}
},
TableName: "Would-You-Rather"
};
dynamodb.putItem(params, function(err, data) {
if (err) {
console.log(err);
callback(err);
} else {
console.log(data);
callback(null, data);
}
});
};
Код Codepen
var xhr = new XMLHttpRequest();
xhr.open('PUT', 'https://iv9803zj9d.execute-api.us-east-2.amazonaws.com/Development/would-you-rather');
xhr.onreadystatechange = function(event) {
console.log(event.target.response);
}
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Authorization', 'allow');
xhr.send(JSON.stringify({Would: Coffe, Rather: Tea, wouldClick: 15, ratherClick: 13, QuestionID: 3e8976be-e763-4c69-84c3-be03ec4a38de}));