簡體   English   中英

GraphQL 項目結構

[英]GraphQL project structure

構建 graphQL 項目/服務器端的最佳方法是什么? 這是我目前的結構

  • 源文件
  • 配置

  • 楷模

  • 設置
  • 模式
    • 查詢
      • 指數
      • 用戶查詢
    • 解析器
      • 指數
      • 用戶解析器
    • 類型
      • 指數
      • 用戶類型

我認為沒有最好的方法來構造GraphQL服務器。 你看起來還好!

檢查此GraphQL API存儲庫,其中包含幾個示例和具有許多不同實現的存儲庫。

在我的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
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 :所有與產品相關的 GraphQL 類型也包括查詢和變異(導出包含 GraphQL 類型的字符串)。

mode.js :產品數據庫架構。

resolvers.js :與產品類型相關的所有解析器。 例如:

let Product = {
    comments: (user: id) => {
        // whatever
    }
}

Product/index.js :組合所有文件並將它們導出為QueryMutationtypesProduct (產品類型字段解析器)。

注意:您還可以將 query.js 或其中任何一個轉換為文件夾,然后將每個查詢和變異解析器寫入自己的文件中。

架構/ index.js:將所有導出查詢突變內index.js並導出為解析器類型定義

例如

export const resolvers = {
    Query: {
      ...ProductQueries,
      ...OrderQueries,
    },
    Mutation: {
      ...ProductQueries,
      ...OrderMutations,
    },
    // schema/Proudct/resolvers.js
    Product,
    Order
}

有關完整說明,請點擊此鏈接https://theehsansarshar.hashnode.dev/scalable-graphql-architecture

我使用標准文件夾結構創建了最簡單的 GraphQL TypeScript 項目。 可以參考。

https://github.com/JayeshGatkal/typescript-graphql-demo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM