Функция обратного вызова DynamIdBatItem не работает - PullRequest
0 голосов
/ 15 января 2019
const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

exports.handler = async (event) => {

    var note = {};
    note.noteid = new Date().getTime();
    note.content = event.queryStringParameters["content"];

    var res = {};

    const response = {
        statusCode: 200,
        body: JSON.stringify(note),
    };

    var obj = {
        'TableName':'notes',
        'Item': {
          'note_id': {
            S: '2'
          },
          'name': {
            S: 'content'
          }
        },
        'ReturnConsumedCapacity': "TOTAL"
    };

    dynamodb.putItem(obj, function(err,result){
        console.log('function called!!');
        console.log(err);

        return response;
    });

};

Мой putItem не работает, функция обратного вызова не вызывается. Я дал полный доступ к роли этого пользователя, но функция по-прежнему не вызывается.

1 Ответ

0 голосов
/ 15 января 2019

Предположим, вы используете AWS Lambda. Поскольку вы используете шаблон async / await, ответ http в конечном итоге будет возвращен async (event) => {}. В вашем случае это ничего. Вы позвонили putItem, но не дождались. async (event) => {} сразу ничего не возвращайте. Поскольку функция вернулась, ваш putItem вызов не имеет шансов для обратного вызова.

Вы должны преобразовать вызов putItem в promise и await для него. Затем обработайте результат и верните http-ответ.

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

exports.handler = async (event) => {

    var note = {};
    note.noteid = new Date().getTime();
    note.content = event.queryStringParameters["content"];

    var res = {};

    const response = {
        statusCode: 200,
        body: JSON.stringify(note),
    };

    var obj = {
        'TableName':'notes',
        'Item': {
          'note_id': {
            S: '2'
          },
          'name': {
            S: 'content'
          }
        },
        'ReturnConsumedCapacity': "TOTAL"
    };

    try
    {
        var result = await dynamodb.putItem(obj).promise();
        //Handle your result here!
    }
    catch(err)
    {
        console.log(err);
    }
    return response;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...