N29
N29

Reputation: 105

Callback is not a function when remote method recursively calls itself

i have the below code when it is called i get an error saying callback in not a function in the last instance of callback. ( callback("UnabletoSetAcessToken") )

serviceOffering.ResetToken = function (retried, Data, options, callback) {
    var filterGetSH = 'Set Token';
    retried++;

    if (retried < 4) {
      if (Data.hasOwnProperty('Name')) {
        filterGetSH = { 'where': { 'Name': Data.Name } };
        serviceOffering.setToken(retried, Data, filterGetSH, options, function (error, dataBody) {
          if (error) {
            serviceOffering.ResetToken(retried, Data, filterGetSH, options, callback);
          } else {
            callback(null, dataBody);
          }
        });
      } else if (Data.hasOwnProperty('EntityId')) {
        filterGetSH = { 'where': { 'EntityId': entityData.EntityId } };
        serviceOffering.setToken(retried, Data, filterGetSH, options, function (error, dataBody) {
          if (error) {
            serviceOffering.ResetToken(retried, Data, filterGetSH, options, callback);
          } else {
            callback(null, dataBody);
          }
        });
      }
    } else {
        callback("UnabletoSetAcessToken")
    }
  };

i expected the callback to get called if max retry has reached when unsuccessful. I am unable to understand what is wrong here and how to approach this. NOTE:- here setToken is a different remote method that when successful with Oauth token or will return error message.

Upvotes: 0

Views: 45

Answers (1)

Ebrahim Pasbani
Ebrahim Pasbani

Reputation: 9406

The signature of setToken and ResetToken does not match when calling.

serviceOffering.ResetToken = function (retried, Data, options, callback) {
    var filterGetSH = 'Set Token';
    retried++;

    if (retried < 4) {
      if (Data.hasOwnProperty('Name')) {
        filterGetSH = { 'where': { 'Name': Data.Name } };
        options.filter = filterGetSH;
        serviceOffering.setToken(retried, Data, options, function (error, dataBody) {
          if (error) {
            serviceOffering.ResetToken(retried, Data, options, callback);
          } else {
            callback(null, dataBody);
          }
        });
      } else if (Data.hasOwnProperty('EntityId')) {
        filterGetSH = { 'where': { 'EntityId': Data.EntityId } };
        options.filter = filterGetSH;
        serviceOffering.setToken(retried, Data, options, function (error, dataBody) {
          if (error) {
            serviceOffering.ResetToken(retried, Data, options, callback);
          } else {
            callback(null, dataBody);
          }
        });
      }
    } else {
        callback("UnabletoSetAcessToken")
    }
  };

Upvotes: 2

Related Questions