Skip to main content
Added the working imperative apex Method
Source Link
Brooks Johnson
  • 1.5k
  • 2
  • 26
  • 41

EDIT it does work from Imperative Apex but I have to parse twice

logInHistory() { userHistory({federationId: this.federationId}) .then(result => { this.showLoginHistory = true; const parsedResult = JSON.parse(result); const parsedII = JSON.parse(parsedResult); this.historyContinuation = parsedII; this.showSpinner = false; }) .catch(error => { this.historyContinuation = error; this.showSpinner = false; alert("There was an error while fetching the patient's log in history"); }) } 

EDIT it does work from Imperative Apex but I have to parse twice

logInHistory() { userHistory({federationId: this.federationId}) .then(result => { this.showLoginHistory = true; const parsedResult = JSON.parse(result); const parsedII = JSON.parse(parsedResult); this.historyContinuation = parsedII; this.showSpinner = false; }) .catch(error => { this.historyContinuation = error; this.showSpinner = false; alert("There was an error while fetching the patient's log in history"); }) } 
added 103 characters in body
Source Link
Brooks Johnson
  • 1.5k
  • 2
  • 26
  • 41

Here is the response from the Apex continuation method. I was able to parse the data using Imperative Apex. But when I tried to used wired everything failed.

Here is the response from the Apex continuation method.

Here is the response from the Apex continuation method. I was able to parse the data using Imperative Apex. But when I tried to used wired everything failed.

Source Link
Brooks Johnson
  • 1.5k
  • 2
  • 26
  • 41

Use HTTP Response Body in Wired Apex

I am trying to do the following:

  1. Called an HTTP Get method from Wired Apex
  2. The callout will return an array of objects
  3. Return response.getBody the wired method.
  4. Parse the response and display in a Lighting Data table.

The callout works fine and returns the values as expected. But I do not seem to be able to access the values of the response. In my console.log it appears that the wired method is running twice. The second time through in the console the value of the parsed response shows as [object object]. When I call Object.keys I get a single value of 'data'. And Object.values show one very long JSON String. I assume that I am failing somehome parse this response into its appropriate array of objects. Any help on how to do this would be appreciated.

Here is the response from the Apex continuation method.

 @AuraEnabled(Cacheable = true) public static Object processLoginResponse(List<String> labels, Object state){ HttpResponse response = Continuation.getResponse(labels[0]); return response.getBody(); } 

Here is the JS for this LWC

export default class IdLoginHistory extends LightningElement { @track returnedData = []; @track error; @track loginData; @api showHistory; @api federationId; @track dataReady; @track recordsToDisplay =[]; @track columns = columns; closeHistory(){ this.dispatchEvent(new CustomEvent('closetable')); } @wire(getLoginHistory, {federationId: '$federationId'}) wiredHistory(data, error){ if (data){ const stringified = JSON.stringify(data); const parsedData = JSON.parse(stringified); console.log('type of ' + typeof parsedData); console.log('index type of = ' + parsedData[0]); console.log('value of parsed data ' + parsedData); console.log('object keys ' + Object.keys(parsedData)); console.log('object values = ' + Object.values(parsedData)); } if (error){ this.data = undefined; this.error = error; } } } 

This is a sample of the JSON from PostMan

[ { "actor": { "id": "00urdbalriusuaL5g0h7", "type": "User", "alternateId": "[email protected]", "displayName": "Brooks Johnson", "detailEntry": null }, "client": { "userAgent": { "rawUserAgent": "SFDC-Async-Callout", "os": "Unknown", "browser": "UNKNOWN" }, "zone": "null", "device": "Unknown", "id": null, "ipAddress": "136.147.62.8", "geographicalContext": { "city": null, "state": null, "country": "United States", "postalCode": null, "geolocation": { "lat": 37.751, "lon": -97.822 } } }, "authenticationContext": { "authenticationProvider": null, "credentialProvider": null, "credentialType": null, "issuer": null, "interface": null, "authenticationStep": 0, "externalSessionId": "trsVBXNk1krSSSPtoz6WBymZA" }, "displayMessage": "User reset password for Okta (by admin)", "eventType": "user.account.reset_password", "outcome": { "result": "SUCCESS", "reason": null }, "published": "2020-05-26T13:41:10.024Z", "securityContext": { "asNumber": 14340, "asOrg": "salesforce.com inc.", "isp": "salesforce.com inc.", "domain": "salesforce.com", "isProxy": false }, "severity": "INFO", "debugContext": { "debugData": { "requestId": "Xs0cdaY3os7Dp0RrBi5ZQAAAB-Q", "requestUri": "/api/v1/users/00urdbalriusuaL5g0h7/lifecycle/reset_password", "threatSuspected": "false", "url": "/api/v1/users/00urdbalriusuaL5g0h7/lifecycle/reset_password?sendEmail=false" } }, "legacyEventType": "core.user.config.user_status.password_reset", "transaction": { "type": "WEB", "id": "Xs0cdaY3os7Dp0RrBi5ZQAAAB-Q", "detail": {} }, "uuid": "8ed048d9-9f56-11ea-8513-3942826c9987", "version": "0", "request": { "ipChain": [ { "ip": "136.147.62.8", "geographicalContext": { "city": null, "state": null, "country": "United States", "postalCode": null, "geolocation": { "lat": 37.751, "lon": -97.822 } }, "version": "V4", "source": null } ] },