【问题标题】:GraphQL project structureGraphQL 项目结构
【发布时间】:2018-12-19 12:04:35
【问题描述】:

构建 graphQL 项目/服务器端的最佳方式是什么? 这是我目前的结构

  • 源代码
  • 配置

  • 型号

  • 设置
  • 架构
    • 查询
      • 索引
      • 用户查询
    • 解析器
      • 索引
      • 用户解析器
    • 类型
      • 索引
      • 用户类型

【问题讨论】:

标签: javascript node.js graphql


【解决方案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
    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 2013-07-11
    • 2013-06-30
    • 2019-02-08
    • 2017-06-11
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多