考虑到突变的输入类型,如何在 GraphQL 中设计模式?
How to design schema in GraphQL considering input types for mutation?
这个模式看起来正确吗?
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
,或者 User 可能是做了 input
?所以该模式看起来像这样
input User {
id: ID
username : String!
email : String!
name : String!
}
mutation createNewUser($usr: User!) {
createUser(user: $usr) : User
}
您的第一种方法是正确的。 id
字段不能为 null (id: ID!
) 并且当您需要创建用户时它不能有值,因此您需要为其设置另一个输入类型。
如mattdionis also pointed out, there's a very similiar sample in the 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];
这个模式看起来正确吗?
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
,或者 User 可能是做了 input
?所以该模式看起来像这样
input User {
id: ID
username : String!
email : String!
name : String!
}
mutation createNewUser($usr: User!) {
createUser(user: $usr) : User
}
您的第一种方法是正确的。 id
字段不能为 null (id: ID!
) 并且当您需要创建用户时它不能有值,因此您需要为其设置另一个输入类型。
如mattdionis also pointed out, there's a very similiar sample in the 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];