我正在构建一个由几个不同对象组成的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 {
...
}
}
}
寻找第一个选项(将所有内容保存到单个查询中)看起来很合理,因为我将使用片段来访问所需的信息,但之后我将拥有一个包含大量相互关系的庞大模式。
PLease建议该用例的最佳实践。
答案 0 :(得分:0)
我建议您不要在其中添加所有需要的数据,而是使用已经指出的片段概念。
您只获取当前页面所需的数据。因此吞吐量保持最小。
e.g。 如果您有一个更新用户的页面,您只需在专门的查询中获取该用户所需的数据。查询由片段组成。 片段与页面中使用的子组件相关,例如显示用户数据的表单。 表单的片段定义了用户需要的数据,更新页面将片段与查询相结合。
// in user form component
const userFormFragments = {
name: "UserForm",
document: `fragment UserForm on User {
id
name
}`
};
// in update user page
const userQuery = `query getUserQuery($userId: ID!) {
getUser(userId: $userId) {
...${userFormFragment.name}
}
${userFormFragment.document}
}`