GraphQL项目结构

HaY*_*awa 1 javascript node.js graphql

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

  • src
  • 配置

  • 楷模

  • 设定
  • 图式
    • 查询
      • 指数
      • userQuery
    • 解析器
      • 指数
      • userResolver
    • 类型
      • 指数
      • 用户类型

Mar*_*iel 9

我不认为有 最好的方法来构造GraphQL服务器。你看起来还好!

检查一下 GraphQL APIs回购,其中包含几个示例和具有许多不同实现的存储库。

在我的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
Run Code Online (Sandbox Code Playgroud)


Ehs*_*har 7

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
Run Code Online (Sandbox Code Playgroud)

让我们探索一下 Product 目录中的内容

query.js:与产品相关的所有查询解析器

mutations.js:与产品相关的所有突变解析器

types.js:所有与产品相关的 GraphQL 类型也包含查询和突变(导出包含 GraphQL 类型的字符串)。

mode.js:产品数据库架构。

solvers.js:与 Product 类型相关的所有解析器。例如:

let Product = {
    comments: (user: id) => {
        // whatever
    }
}
Run Code Online (Sandbox Code Playgroud)

Product/index.js:合并所有文件并将它们导出为QueryMutationtypesProduct(产品类型字段解析器)。

注意:您还可以将 query.js 或其中任何一个转换为文件夹,然后将每个查询和突变解析器写入其自己的文件中。

schema/index.js:将所有导出的QueryMutationtype合并到 index.js 中,并将它们导出为解析器​​和typeDefs

例如

export const resolvers = {
    Query: {
      ...ProductQueries,
      ...OrderQueries,
    },
    Mutation: {
      ...ProductQueries,
      ...OrderMutations,
    },
    // schema/Proudct/resolvers.js
    Product,
    Order
}
Run Code Online (Sandbox Code Playgroud)

有关完整的描述,请点击此链接 https://theehsansarshar.hashnode.dev/scalable-graphql-architecture