Как справиться с кэшированием больших вложенных объектов - PullRequest
0 голосов
/ 07 мая 2018

У меня есть объект graphql, который имеет множество полей вложенных объектов, таких как:

object{
    field1
    field2
    field3
    field4 {
        field4.1
        field4.2 {
            field4.2.1
        }
    }
    field5 {
        field5.1{
            field 5.1.1
            field 5.1.2

        }
    }
    field 6
    field 7
}

Проблема заключается в том, что для field4 и field5 для них нет уникального идентификатора, и они всегда уникальны для объекта. Я не хочу, чтобы он пытался кэшировать эти объекты и вместо этого просто кэшировать весь объект, поскольку дочерние поля уникальны для родительского объекта.

Как мне сказать клиенту, что я не хочу пытаться кэшировать эти дочерние поля и вместо этого просто кэшировать объект в целом?

1 Ответ

0 голосов
/ 08 мая 2018

Я сделал следующее, чтобы обойти это

const blackList = new Set()
new InMemoryCache({
  dataIdFromObject: (o: any) => {
    if (o.__typename != null) {
       if (cacheBlacklist.has(o.__typename)) {
          return null
        }
        ...
    }
...