У меня настроен сервер Node-Express на Elastic Beanstalk, и я пытаюсь получить маршрут '/ signup' для успешного ввода в DynamoDB. Как мне убедиться, что я правильно установил AttributeValues в «поставлять поддерживаемые типы данных»?
У меня установлены типы данных в объекте item
, которые я создаю перед передачей этого объекта в putItem
, однако это, похоже, не решает мою проблему, связанную с AttributeValues.
app.post('/signup', function(req, res) {
console.log('\nreq.body: ', req.body);
var item = {
'email': {'S': req.body.email},
'name': {'S': req.body.name},
'participating': {'BOOL': req.body.participating},
'theme': {'S': req.body.theme}
};
ddb.putItem({
'TableName': 'website-db',
'Item': item,
'Expected': { email: { Exists: false } }
}, function(err, data) {
if (err) {
var returnStatus = 500;
// console.log(err);
if (err.code === 'ConditionalCheckFailedException') {
returnStatus = 409;
}
console.log('DDB Error: ' + err);
res.status(returnStatus).send(err);
} else {
sns.publish({
'Message': 'Name: ' + req.body.name + "\r\nEmail: " + req.body.email
+ "\r\nParticipating: " + req.body.participating
+ "\r\nTheme: " + req.body.theme,
'Subject': 'New Signup',
'TopicArn': snsTopic
}, function(err, data) {
if (err) {
res.status(500).end();
console.log('SNS Error: ' + err);
} else {
res.status(201).end();
}
});
}
});
});
Я дважды проверяю через консоль, что я не отправляю нулевые значения в метод DynamoDB (другие подобные проблемы в сети были вызваны нулевыми значениями putItem
), но возвращается следующая ошибка:
message: "Supplied AttributeValue is empty, must contain exactly one of the
supported datatypes",
code: "ValidationException",
time: "2019-01-07T05:37:29.911Z",
statusCode: 400,
retryable: false,
retryDelay: 0
Я уверен, что моя проблема - это просто отсутствующий параметр или что-то в этом роде, но, похоже, нет особой информации, соответствующей моей проблеме. Заранее спасибо за помощь. Я довольно новичок в Elastic Beanstalk.