GraphQL 项目结构
Posted
技术标签:
【中文标题】GraphQL 项目结构【英文标题】:GraphQL project structure 【发布时间】:2018-12-19 12:04:35 【问题描述】:构建 graphQL 项目/服务器端的最佳方式是什么? 这是我目前的结构
源代码配置
型号
设置 架构 查询 索引 用户查询 解析器 索引 用户解析器 类型 索引 用户类型【问题讨论】:
看起来不错!而且,here's another example 很相似,我认为 ???? 【参考方案1】:我认为没有最好的方式来构建 GraphQL 服务器。你的看起来不错!
查看此GraphQL APIs repo,其中包含多个示例和具有许多不同实现的存储库。
在我的 TypeScript 项目中,我通常使用这样的结构:
src/
├── user/
│ ├── data.ts
│ ├── mutation.ts
│ ├── query.ts
│ └── type.ts
├── bananas/
│ ├── data.ts
│ ├── mutation.ts
│ ├── query.ts
│ └── type.ts
├── utils/
│ ├── database.ts
│ └── config.ts
├── index.ts
└── schema.ts
【讨论】:
你在data.ts
文件中处理什么?
@jastor_007 它只是处理来自数据库的数据请求/响应的函数。
@MarcoDaniel 您好,您如何将所有突变和查询连接到单个文件中?
? @Dan,我将它们全部连接到 schema.ts
文件中。这里我做了一个非常古老的例子,它仍然显示了这个想法:github.com/MarcoDaniels/graphql-demo/blob/master/services/API/…【参考方案2】:
src
schema
Product
model.js
query.js
mutation.js
type.js
resolvers.js
index.js
Order
query.js
mutation.js
model.js
types.js
resolvers.js
index.js
index.js
让我们探索一下 Product 目录中的内容
query.js:与产品相关的所有查询解析器
mutations.js:与产品相关的所有突变解析器
types.js:所有与 Product 相关的 GraphQL 类型也包括查询和变异(导出包含 GraphQL 类型的字符串)。
mode.js:产品数据库架构。
resolvers.js:与产品类型相关的所有解析器。 例如:
let Product =
comments: (user: id) =>
// whatever
Product/index.js:合并所有文件并导出为Query、Mutation、types , Product(产品类型字段解析器)。
注意:您还可以将 query.js 或其中任何一个转换为一个文件夹,然后将每个查询和突变解析器写入其自己的文件中。
schema/index.js:将所有导出的Query、Mutation、type合并到index.js里面并将它们导出为 resolvers 和 typeDefs
例如
export const resolvers =
Query:
...ProductQueries,
...OrderQueries,
,
Mutation:
...ProductQueries,
...OrderMutations,
,
// schema/Proudct/resolvers.js
Product,
Order
有关完整说明,请点击此链接 https://theehsansarshar.hashnode.dev/scalable-graphql-architecture
【讨论】:
【参考方案3】:我创建了具有标准文件夹结构的最简单的 GraphQL TypeScript 项目。可以参考一下。
https://github.com/JayeshGatkal/typescript-graphql-demo
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review以上是关于GraphQL 项目结构的主要内容,如果未能解决你的问题,请参考以下文章
使用 GraphQL 封装 REST API / 仅使用 GraphQL