Skip to main content
2 of 2
Edits for formatting, spelling, indentation, etc. More descriptive title.
pchittum
  • 19.8k
  • 5
  • 57
  • 99

Restaurant Locator Trailhead Project Lightning Error

I am new to Lightning Components. When i try to finish a trailhead challenge called Build a Restaurant component Bascially it show Restaurants near to opportunity billing address and in controller there are method to handle address in both contact as well as opportunity

But when i try to open contact page I am greeted with an error massage like.

Uncaught Error in $A.getCallback() [Cannot read property 'error' of undefined] Callback failed: apex://InTheArea/ACTION$getListByAddress

For reference:enter image description here

Component handler

({
  ...    
    doLayout: function(response, component) {
      var warning = component.find('warning');
      if (data.error) {
        component.set("v.errorMessage", data.error);            
        $A.util.removeClass(warning, 'slds-hide');
      } else {
        $A.util.addClass(warning, 'slds-hide');
      }

        var spinner = component.find('spinner');
        $A.util.addClass(spinner, "slds-hide");
        var data = JSON.parse(response.getReturnValue());
        component.set("v.restaurantList", data.bizArray);
        console.log("The Data: ", data);
    }
})

Apex controller

public class InTheArea {
@AuraEnabled
public static String getLocal (String searchTerm, Decimal lat, Decimal lon) {
  String url = 'https://th-yelp-locator.herokuapp.com/search?address=' + lat +','+ lon + '&term=' + EncodingUtil.urlEncode(searchTerm, 'UTF-8');
  String resultList = getHttp(url);
  return resultList;   
}

private static String getHttp (String url) {
  HttpRequest req = new HttpRequest();
  Http http = new Http();
  req.setMethod('GET');    
  req.setEndpoint(url);
  HTTPResponse res = http.send(req);
  return res.getBody();
}

@AuraEnabled
public static String getListByAddress(Id recordId, String objectType, String searchQuery) {
        try {
    String location;
    if (objectType == 'Account') {            
        location = accountSelect(recordId);
    } else if (objectType == 'Contact') {
        location = contactSelect(recordId);
    }    
     else {
    return '{"error": "This component cannot be used on this page type."}';
}
       
    String url = 'https://th-yelp-locator.herokuapp.com/search?address=' + EncodingUtil.urlEncode(location, 'UTF-8') + '&term=' + EncodingUtil.urlEncode(searchQuery, 'UTF-8');
    String resultList = getHttp(url);
        return resultList;
  }  catch(Exception ex){
      return '{"error": "' + ex.getMessage() + '"}';
  }
}

private static String contactSelect (Id recordId) {
  Contact contact = [SELECT MailingStreet, MailingCity, MailingState FROM Contact WHERE Id=:recordId];
  String location = contact.MailingStreet + ',' + contact.MailingCity + ',' + contact.MailingState;
  return location;
}

private static String accountSelect (Id recordId) {
  Account account = [SELECT BillingStreet, BillingCity, BillingState FROM Account WHERE Id=:recordId];
  String location = account.BillingStreet + ',' + account.BillingCity + ',' + account.BillingState;
  return location;
}
}

Please let me know root cause for the issue

Pavan tej
  • 1.4k
  • 5
  • 43
  • 92