我正在与Vue
一起使用Apollo
,以便查询我项目中的GraphQL
端点。一切都很好,但是我想开始对通用组件进行编程以简化和加快开发。
在大多数情况下,我使用的是Smart Query系统。例如,我使用:
apollo: {
group: {
query: GROUP_QUERY,
variables () { return { id: this.groupId } },
skip () { return this.groupId === undefined },
result ({ data }) {
this.form.name = data.group.name
}
}
}
带有GROUP_QUERY
即:
const GROUP_QUERY = gql`
query groupQuery ($id: ID) {
group (id: $id) {
id
name
usersCount
userIds {
id
username
}
}
}
`
因此我的Apollo智能查询中的group
变量与查询本身group (id: $id)
的名称相同。对于我尝试实现的目标,正是这种机制很烦人。有没有办法避免这种默认机制?
例如,我希望能够提供一个通用名称,例如record
,对于可能返回多个记录的查询,它将是records
。
这样,我将能够制作可在record
或records
上运行的通用组件或混合器。
或者我是否将我的所有查询重命名为record
和records
,如果以后出现错误消息进行故障排除,这会很烦人?
或者也许有另一种方法可以实现这一目标,但我没有考虑过?
提前感谢。
apollo: {
record: {
query: GROUP_QUERY,
variables () { return { id: this.groupId } },
update: (data) => data.group,
skip () { return this.groupId === undefined },
result ({ data }) {
this.form.name = data.group.name
}
}
}
[您应该注意,Apollo对象将在您的组件中创建一个record
变量,并且update
语句显示在哪里获取记录的group
。