Как передать «поддерживаемые типы данных» в DynamoDB во время «putItem» в Node on Express - PullRequest
0 голосов
/ 07 января 2019

У меня настроен сервер 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.

...