如何从 GraphQL 突变返回数据?
Posted
技术标签:
【中文标题】如何从 GraphQL 突变返回数据?【英文标题】:How return data from a GraphQL mutation? 【发布时间】:2018-06-06 19:39:18 【问题描述】:我下面有以下redux-form...如何获取console.log
从graphQL突变结果数据中获取user.id?
const withForm = compose(
withMySignupMutation,
reduxForm(
...
onSubmit: async (values, dispatch,
mySignup,
) =>
try
const result = await mySignup(values);
console.log('I Need user.id here');
console.log(result.user.id);
...
withMySignupMutation
import graphql from 'react-apollo';
import gql from 'graphql-tag';
export const SIGNUP_MUTATION = gql`
mutation (
$email: String!
$name: String!
)
signup(authProvider:
mySignup:
email: $email
name: $name
)
token
`;
export default graphql(
SIGNUP_MUTATION,
props: ( mutate ) => (
mySignup: async (variables) =>
const data = await mutate( variables );
,
),
);
谢谢!节日快乐
【问题讨论】:
不知道这是否是一个错字,但您没有在引号之外记录结果对象。 @AarohMankad 谢谢,但这只是为了展示我正在尝试做的事情。我会更新...有什么想法吗? 突变“signup”的 typedef 是否有返回值。例如: signup(authProvider: authProviderInput) : String 或类似的东西。例如: addAlley(alley: AlleyInput): Alley 这将添加新的胡同并返回胡同。 返回的是“字符串或类似的东西”吗? 【参考方案1】:在我看来,它应该是result.data.signup.id
,但我们需要查看解析器和您的架构定义。这取决于解析器发回的内容。它应该是一个用户类型。
无论如何,你必须在你的突变中询问 id 否则它不会得到解决:
export const SIGNUP_MUTATION = gql`
mutation (
$email: String!
$name: String!
)
signup(authProvider:
mySignup:
email: $email
name: $name
)
token
id ### <===HERE===
`
如果您对服务器有图形访问权限:
点击右上角的DOCS
按钮,然后
点击mutation: Mutation
那么您应该会看到如下内容:
signup(authProvider: AuthProviderNewcomerData!): User
那么你知道你会收到一个User
回复。
【讨论】:
以上是关于如何从 GraphQL 突变返回数据?的主要内容,如果未能解决你的问题,请参考以下文章
Graphql 突变返回 Post 400 错误,不知道如何解决