首页 > 解决方案 > 我们应该在 Apollo Client 的情况下添加后端 graphql 模式吗?

问题描述

我正在使用带有 Apollo graphql(服务器端)的后端节点服务器,在客户端上,我也在使用 Apollo Client。
我在我的客户端模式中为 Apollo 客户端创建了一些客户端特定类型,但我想知道:
我应该为后端类型(模型)做同样的事情吗?只是为了增加一些理智等。

让我用一个例子来解释一下:

这是客户端架构:(客户端特定类型)

import gql from 'graphql-tag';

export default gql`
  type System {
    showSignInModal: Boolean!
  }

  type Robot {
    name: String!
    status: String!
  }

  type Member {
    name: String!
    isLogged: Boolean!
  }

  type Author {
    id: Int!
    posts: Int!
    name: String
  }


  input AuthorInput {
    id: Int!
    posts: Int!
    name: String
  }

`;

我有一个从服务器获取用户数据(服务器特定数据)的查询,
所以我是否也应该在我的模式中描述整个用户类型?

import gql from "graphql-tag";

export const GET_USER_SHORT_DATA = gql`
  mutation getUserShortData {
    me {
      id,
      email,
      name,
      profileUrl,
      locale
    }
  }
`;

感谢您的任何建议!

标签: graphqlapolloreact-apollo

解决方案


我假设您正在使用mongoose您的数据库操作。您的主要类型应该在您的猫鼬模式中定义,因为GraphQL它只是一种查询语言,旨在“只获得您想要的”。因此,您应该在两个地方添加相同的类型。在您mongoose的数据库处理代码和您GraphQL Schema的查询获取支持中。

对于客户端,如果您使用的是 typescript 之类的类型化语言,那么您也应该在客户端定义它们,以防止错误并获得更好的 IDE 建议。


推荐阅读