如何使用大嵌套对象处理缓存

时间:2018-05-07 18:23:53

标签: graphql graphql-js apollo-client graphql-tag

我有一个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 :(得分:0)

我做了以下事情来解决这个问题

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