将 graphql 的片段与 Apollo 一起使用时遇到问题

Having trouble using graphql's fragments with Apollo

我的问题很简单,我需要根据登录我的应用程序的用户类型(使用 react/redux/graphql/apollo)获得不同的菜单功能。

我一切正常,但我的 graphql 查询获取我需要的信息目前看起来像这样:

const currentUsr = gql`
query getCurrentUser {
    getCurrentUser{
        firstname,
        id_users,
        menuItem {
            title,
            url,
            id_parent,
            is_parent,
            icon,
            id_menu_item,
            childs {
                title,
                url,
                id_parent,
                is_parent,
                icon,
                id_menu_item,            
                childs {
                    title,
                    url,
                    id_parent,
                    is_parent,
                    icon,
                    id_menu_item
                }
            }
        }
    }
}
`;

很明显我想在这里使用片段,让它看起来更像这样:

我的 fragment 会像

fragment itemInfo{
    title,
    title,
    url,
    id_parent,
    is_parent,
    icon,
    id_menu_item
}

我想要的结果:

const currentUsr = gql`
query getCurrentUser {
    getCurrentUser{
        firstname,
        id_users,
        menuItem {
            ...itemInfo
            childs {
                ...itemInfo
                childs {
                    ...itemInfo
                }
            }
        }
    }
}

我在文档上找不到简单的解释,至少我没有理解正确。我不知道我是否需要创建片段服务器或客户端,以及如何正确地进行。有人可以接受 graphql/apollo 帮助我在这里做什么吗?非常感谢!

因此,当您编写查询时,您要做的是以下内容。

  1. 类型片段
  2. 指定片段的行为

概括一下

query {
 _id
 name
 ... on UserType1 {
   #UserType1Fieldshere
 }
 ... on UserType2 {
   #UserType2fieldshere
 }

这允许您根据要返回的用户类型请求特定字段。您可能希望将您的用户分组在 "interface type" 或联合下,以便描述关系。

此处:https://medium.com/the-graphqlhub/graphql-tour-interfaces-and-unions-7dd5be35de0d

是一本很好的指南,内容更详细。