Nithin
Nithin

Reputation: 1477

Lambda function returning null after invoking callback

I am writing a lambda function and returning a callback but the response is coming to be null.

My function looks like

var CloudmersiveValidateApiClient = require('cloudmersive-validate-api-client');
var defaultClient = CloudmersiveValidateApiClient.ApiClient.instance;

// Configure API key authorization: Apikey
var Apikey = defaultClient.authentications['Apikey'];
Apikey.apiKey = 'API-KEY';

// Create an instance
var apiInstance = new CloudmersiveValidateApiClient.EmailApi();

exports.handler = async (event, context, callback) => {

    var email = event.email;

    apiInstance.emailFullValidation(email, callbackcm);

    var callbackcm = function(error, data, responsed) {

        if (error) {
            callback(null, {
               "Error": JSON.stringify(error)
           });
        } else {
            callback(null, {
               "Body": JSON.stringify(data)
           });
        }
    };

};

Is there something wrong with the way i am returning?

Upvotes: 0

Views: 212

Answers (1)

slebetman
slebetman

Reputation: 113866

Your sequencing is wrong. You assign the callbackm function after you've passed it in as an argument. You either need to do:

exports.handler = async (event, context, callback) => {

    var email = event.email;

    var callbackcm = function(error, data, responsed) {
        // ....
    };

    apiInstance.emailFullValidation(email, callbackcm);

};

or do this:

exports.handler = async (event, context, callback) => {

    var email = event.email;

    apiInstance.emailFullValidation(email, callbackcm);    

    function callbackcm (error, data, responsed) {
        // ....
    };
};

This is because javascript parses code in two phases. Google "hoisting" for more on how this behaves.

Upvotes: 1

Related Questions