javascript - 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 })
}
}
}
});
它没有达到解决功能,我不知道为什么!提前致谢。
解决方案
感谢 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
}
})
推荐阅读
- r - 如何更改分组格点 xyplot 中的 x 轴值
- python - 如何在 Flask cookie 会话中安全地存储 OAuth 凭据?
- c - 理解 %*d 和 if (( scanf( "%d", &n ) != 1 ) || ( n <= 0 )) in c
- javascript - 打字稿 | 从对象 T 中提取具有类型 K 值的所有键名
- mongodb - 同一文档中的 $match expr 不起作用
- python - 是否有不依赖按键的定时器功能
- javascript - 导航在滚动位置更改背景的粘性位置
- firebase - 如何仅将文档从一个集合复制到另一个集合 Flutter Firebase
- android - 如何根据视图模型中的值设置视图的可见性?
- java - 用于嵌套 do while 循环的 Junit 测试用例