graphql - 我们应该在 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
}
}
`;
感谢您的任何建议!
解决方案
我假设您正在使用mongoose
您的数据库操作。您的主要类型应该在您的猫鼬模式中定义,因为GraphQL
它只是一种查询语言,旨在“只获得您想要的”。因此,您应该在两个地方添加相同的类型。在您mongoose
的数据库处理代码和您GraphQL Schema
的查询获取支持中。
对于客户端,如果您使用的是 typescript 之类的类型化语言,那么您也应该在客户端定义它们,以防止错误并获得更好的 IDE 建议。
推荐阅读
- oracle - 批量将数据从 Source 加载到 Salesforce
- c# - 如何在 C# 中反序列化 ksql 查询的行键?
- sql - Ms Access SQL 如何消除重复值
- python - Django / HTML提交按钮重定向到错误页面
- vba - 在 VBA 模块中检索上一个会计月份的日期
- php - 在两个单独的表中插入数据
- html - 每个产品类别的列的自定义 CSS
- r - 如何修复在 RStudios Geomorph 包中注册为大气矢量的 3D ACII .ply?
- php - 问题让 ZipArchive::close() 运行并创建一个 zip 文件夹 php
- android - 我可以在 Firebase Crashlytics 中进行正常日志吗?