我一直在使用graphql-js在Node服务器中使用GraphQL,而GraphQL已经证明是一个非常有价值的抽象,但我遇到了一个问题。
我经常发现自己需要使用GraphQLInputObjectType
将大型结构化对象作为GraphQL突变的参数传递。这没关系,但是GraphQL不支持使用JSON表示法:(。所以我最终只发送一个包含JSON的字符串,供服务器处理。
const objectStr = JSON.stringify(object).replace(new RegExp("\"", "g"), "'")
graphQLClient(`{
user: updateUser(someDataObject: "${objectStr}") {...}
}`)
但是现在我从GraphQL中完全没有受益!
我有一种感觉,我在这里做错了什么。什么是GraphQL方式,例如,将注册表单数据发送到变异?
答案 0 :(得分:3)
这样做的最佳方法是使用输入对象。
基本上你的请求看起来像是:
/* 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 for updating data以帮助您构建API。
希望这有帮助!