首页 > 解决方案 > React 中的动态 GraphQL 突变与模板文字

问题描述

我正在尝试将我的 Google OAuth 响应发送到 gql 突变以对用户进行身份验证/登录。当从 google 获得响应时,我正在执行以下操作:

const authGQL = (user) => graphql(gql`
    mutation {
        LoginOrSignup(name: ${user.profileObj.name}, email: ${user.profileObj.email}, googleId: 
        ${user.googleId}, imageUrl: ${user.profileObj.imageUrl}) {
      name
      email
      googleId
      imageUrl
    }
  }
`);

这是在我的突变文件中:

const mutation = new GraphQLObjectType({
    name: 'Mutation',
    fields: {
        LoginOrSignup: {
            type: UserType,
            args: {
                name: { type: new GraphQLNonNull(GraphQLString) },
                email: { type: new GraphQLNonNull(GraphQLString) },
                googleId: { type: new GraphQLNonNull(GraphQLString) },
                imageUrl: { type: new GraphQLNonNull(GraphQLString) }
            },
            resolve(parentValue, { name, email, googleId, imageUrl}, request) {
                return AuthService.verifyUser({ name, email, googleId, imageUrl, req: request })
            }
        }
    }
});

它没有达到解决功能,我不知道为什么!提前致谢。

标签: javascriptreactjsgraphqlgqlmutation

解决方案


感谢 azium 为我指明了正确的方向。我不得不使用变量:

const mutation = gql` 
mutation LoginOrSignup($name: String!, $email: String!, $googleId: String!, $imageUrl: String!, $id_token: String!){
  LoginOrSignup(name: $name, email: $email, googleId: $googleId, imageUrl: $imageUrl, id_token: $id_token) {
    email
    name
  }
}
`

在 React 中,我必须使用 props.mutate 设置这些变量:

    props.mutate({
      variables: {
        name: res.profileObj.name,
        email: res.profileObj.email,
        googleId: res.googleId,
        imageUrl: res.profileObj.imageUrl,
        id_token: res.tokenObj.id_token
      }
    })

推荐阅读