Skip to content
This repository was archived by the owner on Feb 26, 2024. It is now read-only.

Extending InMemorDataService #219

Open
72gm opened this issue Oct 31, 2018 · 2 comments
Open

Extending InMemorDataService #219

72gm opened this issue Oct 31, 2018 · 2 comments

Comments

@72gm
Copy link

72gm commented Oct 31, 2018

This may be a HowTo rather than an issue.

The company I am working for doesn't follow a restful pattern e.g. api/courses/abc doesn't return a course... it actually returns a wrapped object with a course inside

This is along the lines of {"operationSucceeded": true, "data": data, "notifications": []}

This causes an error as the item can't be found in the collection (because the collection is a level down)

e.g. collection.data rather than collection

Ok. So I have extended the service and used the get(reqInfo: RequestInfo) {} method

I have set const collection = reqInfo.collection.data;

It then finds the object correctly but I need to wrap this back up in the same object format. So i do

const options: ResponseOptions = data ?
{
body: {"operationSucceeded": true, "data": data, "notifications": []},
status: STATUS.OK
} :
{
body: { error: 'id='${id}' not found },
status: STATUS.NOT_FOUND
};

(As shown in your hero-in-mem-data-override.service.ts)

The built options look ok but my http subscription callback blows up with the following

"TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable"

Do you have any advice? Am I creating the body wrong?

@vishal423
Copy link
Contributor

@72gm
Copy link
Author

72gm commented Dec 4, 2018

In case someone comes across this issue:

I'd looked at that and successfully intercepted and manipulated the data (as mentioned above)... but it blew up on return to the subscriber..

the way to get round this is by adding a return type of Observable

get(reqInfo: RequestInfo):Observable<Response>

then return as so

let responseOptions = this.finishOptions(options, reqInfo);
    return reqInfo.utils.createResponse$(() => responseOptions);

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants