reactjs - 从反应将数据传递给graphql的问题
问题描述
我有用户名和密码,我想从前端的反应发送到 graphql 后端。我正在为此使用阿波罗客户端
在我的客户端我有这个
const REGISTER_USER = gql`
mutation RegisterUser($username: String!, $password: String!) {
registerUser(username: $username, password: $password) {
username,
password
}
}
`;
我这样称呼它
registerUser({ variables: { username: values.username, password: values.password } })
在我的服务器上
const UserType = new GraphQLObjectType({
name: 'user',
fields: () => ({
username: { type: GraphQLString },
password: { type: GraphQLString }
})
});
const Mutations = new GraphQLObjectType({
name: 'Mutation',
fields: {
registerUser: {
type: UserType,
args: {
username: { type: GraphQLString },
password: { type: GraphQLString }
},
resolve(username, password) {
console.log(username, password, 123)
}
},
}
})
问题是 - 我将密码和用户名分别作为字符串传递,但我console.log(username, password, 123)
的 in 突变返回undefined
完整的对象,其中包含用户名、密码字段。
我不确定我在哪里做错了什么。所有的帮助将不胜感激。
解决方案
该resolve
函数具有source
、args
和context
作为info
参数。您可以在解析器函数签名中了解更多信息。
所以基本上你要求source
and args
,这就是为什么一个是undefined
而另一个是争论的对象。在解析器中获取变量的方法是:
const Mutations = new GraphQLObjectType({
name: 'Mutation',
fields: {
registerUser: {
type: UserType,
args: {
username: { type: GraphQLString },
password: { type: GraphQLString }
},
resolve: (source, args) {
console.log(args.username, args.password)
// HERE: you can access your arguments input as part of the 'args' object
}
},
}
})
希望能帮助到你。
推荐阅读
- sql - MAX() OVER PARTITION 未按预期工作
- c - 在 printf 中使用变量和赋值的返回值
- docker - 从 Docker 容器连接到 CosmosDB
- python-3.x - 是否可以从值中获取 xpath 位置?
- azure - 默认情况下在新子网上应用 NSG/ASG (Azure)
- c# - 如何使用 C# 从 SqlConnection 返回多个结果
- php - 向相关经理发送 WooCommerce 新订单电子邮件通知
- linux - LACP 绑定中的流失状态含义
- android - Kotlin 中的空内容共享首选项
- react-native - 如何重新渲染 redux 状态。状态更改已完成但呈现问题