AWS Лямбда javascript -sdk, реализующий динамический прием метода putItem для тайм-аута - PullRequest
0 голосов
/ 16 марта 2020

Я пытался использовать оба способа: Async Handlers и Non-Async Handlers, чтобы реализовать метод DynamId putItem. он вернул неверный ответ. Это работает для закомментированной функции setTimeout.

Я попытался пообещать метод putynm dynomodb в Non-Asyn c Способ обработки, как упомянуто, и официальная документация https://docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html. Но все равно не повезло. Кто-нибудь может указать мне на проблему с кодом?

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

exports.lambdaHandler = async function(event) {
    const promise = new Promise(function(resolve, reject){

        // setTimeout(function(){
        //     console.log("resolvedx")
        //     resolve({statusCode: 200, body: "resolvedx"})
        // }, 200)

        dynamodb.putItem({
            TableName: 'CUSTOMER_LIST',
            Item: {
                'CUSTOMER_ID': { N: '012' },
                'CUSTOMER_NAME': { S: 'zzzza' }
            }
        }
        , function(err, data) {
            if (err) {
                console.log("err", err);
                reject(JSON.stringify({statusCode:200, body:err}));
            } else {
                console.log("success", data);
                resolve(JSON.stringify({statusCode:200, body:data}));
            }
        })
    })

    return promise
}

как Non-Async Handlers

exports.lambdaHandlerx = (event, context, callback) => {


    const dbPromise = () => new Promise((resolve, reject) => {

        console.log("inside db promise")
        dynamodb.putItem({
                TableName: 'CUSTOMER_LIST',
                Item: {
                    'CUSTOMER_ID': { N: '023' },
                    'CUSTOMER_NAME': { S: 'asdddwa' }
                }
            }
            , function(err, data) {
                if (err) {
                    console.log("err", err);
                    reject(err);
                } else {
                    console.log("success", data);
                    resolve(data);
                }
            })
    })

    Promise.all([dbPromise()]).then(data => {
        console.log("then", data)
        callback(null, {
            'statusCode': 200,
            'body': JSON.stringify({
                message: "dataxz"+ JSON.stringify(data)
            })
        })
     }
    ).catch(e => {
        callback(null, {
            'statusCode': 200,
            'body': JSON.stringify({
                message: 'err'
            })
        })
    })


}

Вывод

Function returned an invalid response (must include one of: body, headers, multiValueHeaders or statusCode in the response object). Response received:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...