首页 > 解决方案 > 智能查询自定义变量名称是否可能?

问题描述

我正在使用VuewithApollo来查询GraphQL我项目中的端点。一切都很好,但我想开始编写通用组件以简化和加快开发。

问题是,在大多数情况下,我使用智能查询系统。例如,我使用:

  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
      }
    }
  }
`

所以我group的 apollo 智能查询中的变量与查询本身具有相同的名称group (id: $id)。正是这种机制对我试图实现的目标来说非常烦人。有没有办法避免这种默认机制?

例如,我希望能够给出一个通用名称,例如record, 它将records用于可能返回多条记录的查询。

有了它,我将能够制作在 或 上运行的通用组件或recordmixin records

或者我是否必须将所有查询重命名为,如果出现错误消息进行故障排除recordrecords以后会很烦人?

或者也许还有另一种方法可以实现这一目标,而我没有考虑过?

提前致谢。

标签: vue.jsvue-apollo

解决方案


通过这样做 :

const GROUP_QUERY = gql`
  query groupQuery ($id: ID) {
    record: group (id: $id) {
      id
      name
      usersCount
      userIds {
        id
        username
      }
    }
  }
`

如果GROUP_QUERY在多个地方使用 ,则可以在record名称下访问结果,因为它被定义为 的别名group。请参阅Aliases的文档。


推荐阅读