具有多个对象的GraphQL:我应该在一个查询中保留所有对象吗?

具有多个对象的GraphQL:我应该在一个查询中保留所有对象吗?,graphql,Graphql,我正在构建一个由几个不同对象组成的SaaS B2B应用程序。示例: 使用者 顾客 斯托克滕斯 库存水平 价目表 销售 返回 等等 我将有大约40个不同的对象,可以单独列出、创建、编辑和删除 第一次面对GraphQL概念,我是应该为所有对象构建一个大型模式,如下面的示例,还是应该让每个对象都有自己的查询 query { viewer { Users { id firstName lastName address city

我正在构建一个由几个不同对象组成的SaaS B2B应用程序。示例:

  • 使用者
  • 顾客
  • 斯托克滕斯
  • 库存水平
  • 价目表
  • 销售
  • 返回
  • 等等
我将有大约40个不同的对象,可以单独列出、创建、编辑和删除

第一次面对GraphQL概念,我是应该为所有对象构建一个大型模式,如下面的示例,还是应该让每个对象都有自己的查询

query {
  viewer {
    Users {
      id
      firstName 
      lastName
      address
      city
      ...
    }
    Customers {
        id
        firstName
        lastName
        address
        city
        rating
        ...

    }
    StockItens {
        id 
        item_id
        sales {
            id
            dateTime
            qty
            unitValue
            totalValue
            ...
        }
        ...
    }
    StockLevels {
        ...
    }
    PriceList {
        ...
    }
    Sales {
        id
        dateTime
        qty
        unitValue
        totalValue
        ...
    }
    Returns {
        ...
    }
  }
}
寻找第一个选项(将所有内容都保存在一个查询中)似乎是合乎逻辑的,因为我将使用片段来访问所需的信息,但随后我将拥有一个具有大量相互关系的巨大模式


请告知该用例的最佳实践。

我建议您不要编写添加所有所需数据的查询,而是使用您已经指出的片段概念

并且只获取当前页面所需的数据。因此吞吐量保持最小

e、 g。 如果您有一个更新用户的页面,您只需在专门的查询中获取该用户所需的数据。查询由片段组成。 片段与页面中使用的子组件相关,例如显示用户数据的表单。 表单的片段定义了它需要的来自用户的数据,更新页面将这些片段组合到查询中

//用户表单组件中
常量userFormFragments={
名称:“用户表单”,
文档:`fragment UserForm on User{
身份证件
名称
}`
};
//在更新用户页面中
const userQuery=`query getUserQuery($userId:ID!){
getUser(userId:$userId){
…${userFormFragment.name}
}
${userFormFragment.document}

}`
我建议您不要编写添加所有所需数据的查询,而是使用您已经指出的片段概念

并且只获取当前页面所需的数据。因此吞吐量保持最小

e、 g。 如果您有一个更新用户的页面,您只需在专门的查询中获取该用户所需的数据。查询由片段组成。 片段与页面中使用的子组件相关,例如显示用户数据的表单。 表单的片段定义了它需要的来自用户的数据,更新页面将这些片段组合到查询中

//用户表单组件中
常量userFormFragments={
名称:“用户表单”,
文档:`fragment UserForm on User{
身份证件
名称
}`
};
//在更新用户页面中
const userQuery=`query getUserQuery($userId:ID!){
getUser(userId:$userId){
…${userFormFragment.name}
}
${userFormFragment.document}
}`