如何引用代表现有记录的类型列表?

时间:2016-09-18 22:44:22

标签: graphql

假设我有两种类型,UserPermission,例如

type User {
  id: ID!
  firstName: String!
  lastName: String!
  email: String!
  permissions: [Permission!]
}

type Permission {
  id: ID!
  name: String!
}

Userpermissions字段,其中包含关联的Permission类型记录列表。

如何构建更新用户拥有权限的变异查询?

2 个答案:

答案 0 :(得分:1)

我在变异中使用了ID类型的permissions类型列表

我已将permissions参数设置为GraphQLID列表。

type Mutation {
  updateUser (
    id: ID!
    email: String
    password: String
    firstName: String
    lastName: String
    # List of Permission IDs
    permissions: [ID!]
  ): User
}

此方法的问题在于,这并未定义Permission类型与ID之间的关系。因此,我添加了“权限ID列表”注释。

另一种方法是创建专用输入类型,例如

input PermissionInput {
    id: ID!
}

并在ID权限参数中使用该代替updateUser。但是,这并没有解决参考问题。

答案 1 :(得分:1)

不幸的是,我不能只添加评论,但我们以同样的方式解决问题 - 但为了确保数据形状的清晰性和一致性,我们使用特定的id字段。即我们会像这样定义输入:

type Mutation {
  updateUser (
    id: ID!
    email: String
    password: String
    firstName: String
    lastName: String
    permissionIds: [ID!]
  ): User
}

非常基本的区别,但它明确区分输入和输出,每个字段名称都很直观,没有太多开销。