将复杂的parameter passing给GraphQL突变

我已经在使用graphql-js的Node服务器中使用GraphQL,并且GraphQL已经被certificate是一个非常有价值的抽象,但是我遇到了一个问题。

我经常发现自己需要使用GraphQLInputObjectType将大型结构化对象作为parameter passing给GraphQL突变。 这样可以,但是GraphQL不支持使用JSON记法:(所以我最终只是发送一个包含JSON的string,供服务器处理。

 const objectStr = JSON.stringify(object).replace(new RegExp("\"", "g"), "'") graphQLClient(`{ user: updateUser(someDataObject: "${objectStr}") {...} }`) 

但是现在我从GraphQL中一点也不受益!

我有一种感觉,我在这里做错了什么。 什么是GraphQL发送方式,比如registry单数据到一个变种?

这样做的最好方法是使用input对象。

基本上你的要求是这样的:

 /* Query */ mutation Update($input: UpdateUserInput!) { updateUser(input: $input) { changedUser { id username } } } /* Variables (as JSON) */ { "input": { "username": "elon@spacex.com", "password": "SuperSecretPassword" } } 

您可以将它传递到POST请求中有效负载的内容主体中,如下所示:

 { "query": <GraphQL query from above as a string>, "variables": <JSON object from above> } 

如果您想要更深入的解释,您可以查看Scaphold's Docs更新数据,以帮助您构build您的API。

希望这可以帮助!