AWS Lamda api не работает из браузера, показывая синтаксическую ошибку - PullRequest
0 голосов
/ 08 мая 2020

Я создал простой метод обновления элемента Dynamotable. Если я жестко запрограммировал значение в лямбда-функции и проверил его с помощью лямбда-функции, он работает абсолютно нормально, но проблема в том, что я пытаюсь добавить значения из события, в котором отображается синтаксическая ошибка.

Вот моя функция лямбда

const AWS = require('aws-sdk');
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": event.QuestionID,
    },
    UpdateExpression: "set Would = :w, Rather = :r, wouldClick = :wC, ratherClick = :rC",
    ExpressionAttributeValues:{
        ":w": event.Would,
        ":r": event.Rather,
        ":wC": event.wouldClick,
        ":rC": event.ratherClick
    },
    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));
    }
});

};

Это мое тестовое событие, которое я тестирую из lamda

{
  "Would": "Soap",
  "Rather": "Oil",
  "wouldClick": "50",
  "ratherClick": "13",
  "QuestionID": "16563fa7-e833-445f-a76b-a9fbaab3a301"
}

И он работает нормально, но когда я пытаюсь запустить из 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);
}
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Authorization', 'allow');

xhr.send(JSON.stringify({Would: Coffe,Rather: Tea, wouldClick: 15, ratherClick: 13, QuestionID: 16563fa7-e833-445f-a76b-a9fbaab3a301}));

Показывает эту ошибку

level: "ERROR"
line: -6
message: "Uncaught SyntaxError: Unexpected token '{'"
type: "js"

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Вам нужно заключить ваше значение в строковые кавычки. Как и в приведенном выше ответе, вам нужно добавить строковые кавычки не только в QuestionID, но и со значениями Would и Rather.

Вот так

{Would: "Coffe",Rather: "Tea", wouldClick: 15, ratherClick: 13, QuestionID: "16563fa7-e833-445f-a76b-a9fbaab3a301"}

Итак, весь ваш код выглядит вот так, если протестировали, и он работает :)

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);
}
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Authorization', 'allow');

xhr.send(JSON.stringify({Would: "Coffe",Rather: "Tea", wouldClick: 15, ratherClick: 13, QuestionID: "16563fa7-e833-445f-a76b-a9fbaab3a301"}));
1 голос
/ 08 мая 2020

Ваш GUID для QuestionID должен заключаться в строковые кавычки, например:

QuestionID: "16563fa7-e833-445f-a76b-a9fbaab3a301"
...