将复杂的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。
希望这可以帮助!