如何在GraphQL中设计考虑突变的输入类型的模式?
问题描述:
此模式看起来是否正确?如何在GraphQL中设计考虑突变的输入类型的模式?
type User {
id : ID!
username : String!
email : String!
name : String!
}
input UserInput {
username : String!
email : String!
name : String!
}
mutation createNewUser($usr: UserInput!) {
createUser(user: $usr)
}
至于用户内部ID将在用户创建分配,是否应该有独立的type
并在此架构input
或用户可以作出input
?因此,该架构看起来像这样
input User {
id: ID
username : String!
email : String!
name : String!
}
mutation createNewUser($usr: User!) {
createUser(user: $usr) : User
}
答
你在第一种方法中的钱是正确的。 id
字段不能为空(id: ID!
),并且在您需要创建用户时它不能有值,因此您需要为其创建另一个输入类型。
由于mattdionis也指出,docs中有一个非常相似的样本。
答
你的架构应该是
const typeDefinitions = `
type User {
id : ID!
username : String!
email : String!
name : String!
}
input UserInput {
username : String!
email : String!
name : String!
}
type Mutation {
createUser(user: UserInput) User
}
schema {
mutation:Mutation
}
`;
export default [typeDefinitions];
我相信您最初的做法是正确的基础上,文档:http://graphql.org/graphql-js/mutations-and-input-types/ – MattDionis