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
}