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

Extending InMemorDataService #219

Open

Description

@72gm

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?

Activity

  1. 72gm commented on Dec 4, 2018

    @72gm
    Author

    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 join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions