__typename graphql remove code example

Example: __typename remove graphql

There are three ways of doing this

**First way**

Update the client parameter like this it will omit the unwanted fields in graphql.

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

    apollo.create({
      link: http,
      cache: new InMemoryCache({
        addTypename: false
      })
    });

<!-- end snippet -->

**Second Way**

By using the [omit-deep][1] package and use it as a middleware 


  [1]: https://github.com/jonschlinkert/omit-deep

    const cleanTypeName = new ApolloLink((operation, forward) => {
      if (operation.variables) {

        operation.variables = omitDeep(operation.variables,'__typename')
      }
      return forward(operation).map((data) => {
        return data;
      });
    });

**Third Way**

Creating a custom middleware and inject in the apollo

    const cleanTypeName = new ApolloLink((operation, forward) => {
      if (operation.variables) {
        const omitTypename = (key, value) => (key === '__typename' ? undefined : value);
        operation.variables = JSON.parse(JSON.stringify(operation.variables), omitTypename);
      }
      return forward(operation).map((data) => {
        return data;
      });
    });
and inject the middleware

    const httpLinkWithErrorHandling = ApolloLink.from([
      cleanTypeName,
      retry,
      error,
      http,
    ]);



Preferred method is **Third Way** Because it does not have any third pary dependency and no cache performance issues

Tags:

Misc Example