【发布时间】:2018-12-19 12:04:35
【问题描述】:
构建 graphQL 项目/服务器端的最佳方式是什么? 这是我目前的结构
- 源代码
配置
型号
- 设置
- 架构
- 查询
- 索引
- 用户查询
- 解析器
- 索引
- 用户解析器
- 类型
- 索引
- 用户类型
- 查询
【问题讨论】:
-
看起来不错!而且,here's another example 很相似,我认为 ????
标签: javascript node.js graphql
构建 graphQL 项目/服务器端的最佳方式是什么? 这是我目前的结构
配置
型号
【问题讨论】:
标签: javascript node.js graphql
我认为没有最好的方式来构建 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文件中处理什么?
schema.ts 文件中。这里我做了一个非常古老的例子,它仍然显示了这个想法:github.com/MarcoDaniels/graphql-demo/blob/master/services/API/…
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
【讨论】:
我创建了具有标准文件夹结构的最简单的 GraphQL TypeScript 项目。可以参考一下。
【讨论】: