javascript - Legg til nestede felt i cache typePolicies - Apollo v3


Jeg lurer på om det er mulig å ha nestede verdier ved bruk av typePolicies i InMemoryCache. Foreløpig kan du definere flate felter policies.

new InMemoryCache({
  typePolicies: {
    Query: {
      fields: {
        hello: {
          read() {
            return 'hello'
          },
        },
        hola: {
          read() {
            return 'hola'
          },
        },
      },
    },
  },
})

// query flat local field using apollo
const QUERY_USER_PAGE = gql`
  query UserPage {
      hello
      hola
  }
`

Hva om jeg ønsker å ha typePolicies som reflekterer strukturen til appen min, noe som ser ut til å være god praksis.
En flat struktur vil ha begrensninger når det gjelder skalering og vedlikehold for store prosjekter.

new InMemoryCache({
  typePolicies: {
    Query: {
      fields: {
        userPage: {
          hello: {
            read() {
              return 'hello'
            },
          },
          hola: {
            read() {
              return 'hola'
            },
          },
        },
      },
    },
  },
})

// query nested local field using apollo:
const QUERY_USER_PAGE = gql`
  query UserPage {
    userPage @client {
      hello
      hola
    }
  }
`

Svar #1

Du må legge til en policy i UserPage i stedet for i Query

new InMemoryCache({
  typePolicies: {
    UserPage: {
      fields: {
        hello: {
          read() {
            return 'hello'
          },
        },
        hola: {
          read() {
            return 'hola'
          },
        },
      },
    },
  },
})

Relaterte artikler