2016-12-28 45 views
4

此模式看起来是否正确?如何在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 
} 
+1

我相信您最初的做法是正确的基础上,文档:http://graphql.org/graphql-js/mutations-and-input-types/ – MattDionis

回答

0

你在第一种方法中的钱是正确的。 id字段不能为空(id: ID!),并且在您需要创建用户时它不能有值,因此您需要为其创建另一个输入类型。

由于mattdionis也指出,docs中有一个非常相似的样本。

0

你的架构应该是

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];