Search code examples
reactjsapolloreact-apolloapollo-client

Apollo client - local field with computed value from object


In Apollo client 3 I want to create local field based on object values (computed field).

How I can reference object fields in apollo local fields

I am imaging something like this:

new InMemoryCache({
typePolicies: {
  OrganizationType: {
    fields: { 
      url: { 
        read(object) { 
          return `/organization/${object.name}/`
        }
      }
    }
  }
}


query OrganizationList {
   organizationList {
      name
      url @client
   }
}

Result

[{
   "__typename": "OrganizationType",
   "name": "google",
   "url": "/organization/google/"
},
{
   "__typename": "OrganizationType",
   "name": "apple",
   "url": "/organization/apple/"
}]

Solution

  • Found answer, all you need to do is pass readField

    new InMemoryCache({
    typePolicies: {
      OrganizationType: {
        fields: { 
          url: { 
            read(_,{readField}) { 
              return `/organization/${readField('name')}/`
            }
          }
        }
      }
    }