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

Graphql 如何引用表示现有记录的类型列表?,graphql,Graphql,假设我有两种类型,用户和权限,例如 type User { id: ID! firstName: String! lastName: String! email: String! permissions: [Permission!] } type Permission { id: ID! name: String! } 用户具有权限字段,该字段包含关联的权限类型记录列表 如何构造一个突变查询来更新用户拥有的权限?我只是在突变中使用了一个ID类型列表作为权限参数 我

假设我有两种类型,
用户
权限
,例如

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

type Permission {
  id: ID!
  name: String!
}
用户
具有
权限
字段,该字段包含关联的
权限
类型记录列表


如何构造一个突变查询来更新用户拥有的权限?

我只是在突变中使用了一个
ID
类型列表作为
权限
参数

我已将
权限
参数设置为权限列表

这种方法的问题在于,它没有定义
权限
类型和
ID
之间的关系。因此,我添加了“权限ID列表”注释

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

input PermissionInput {
    id: ID!
}

并在中使用它,而不是在
updateUser
permissions参数中使用
ID
。然而,这并不能解决引用问题。

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

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

非常基本的区别,但它清楚地区分了输入和输出,每个字段名称都是直观的,并且没有太多开销。

我只使用其中的第一个字段,我做了类似的操作,而且非常好。这正是我在最后使用的内容。:-)
type Mutation {
  updateUser (
    id: ID!
    email: String
    password: String
    firstName: String
    lastName: String
    permissionIds: [ID!]
  ): User
}