【问题标题】:How to merge graphQL fragments for request with apollo client如何使用 apollo 客户端合并用于请求的 graphQL 片段
【发布时间】:2018-02-15 03:49:44
【问题描述】:

我有以下类型和:

union U = B|C|D

type A = { childs: U }

我与这个片段一起使用,它工作正常,apollo 客户端能够正确解析子对象

fragment A on A {
    childs {
        ...B
        ...C
        ...D
    }
}

当我把它转换成

fragment A on A {
    childs {
        U
    }
}

fragment U on U {
    ...B
    ...C
    ...D
}

apollo 客户端无法再解析子对象,所有对象都是空的,没有任何字段。有没有办法合并碎片?

【问题讨论】:

    标签: graphql react-apollo apollo-client


    【解决方案1】:

    首先,我认为您的转换可能存在拼写错误? U 失踪了...

    fragment A on A {
        childs {
            ...U # here
        }
    }
    

    我认为你也应该尝试使用conditional fragments

    fragment U on U {
        ... on B {
            ...B
        }
        ... on C {
            ...C
        }
        ... on D {
            ...D
        }
    }
    

    【讨论】:

    • 与我的查询结果相同,查询有效,但阿波罗商店中的项目是空的,没有字段
    • 抱歉,我真的不知道出了什么问题。也许您可以检查您的 dataIdFromObject 是否正常工作,并确保您的片段始终查询 id 字段。也许您可以在您的问题中包含此查询的输出+查询之前/之后的 Apollo 存储状态
    • dataIdFromObject 可能有什么问题
    • 如果总是返回相同的值,一种类型的结果可能会覆盖另一种类型的结果。如果您发布阿波罗商店的状态,就可以看到这一点。
    • 找到问题了,我错过了联合类型的解析器。
    猜你喜欢
    • 2023-03-19
    • 2017-09-04
    • 2020-01-07
    • 2020-02-01
    • 2019-07-26
    • 2019-09-27
    • 2018-01-09
    • 2018-11-29
    • 2021-05-30
    相关资源
    最近更新 更多