将数据从反应传递到 graphql 的问题
Problem with passing data to graphql from react
我有用户名和密码,我想从前端的反应发送到 graphql 后端。为此我正在使用 apollo 客户端
在我的客户端,我有这个
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)
突变返回 undefined
和带有用户名、密码字段的完整对象。
我不确定我哪里做错了。
非常感谢所有帮助。
resolve
函数有 source
、args
、context
和 info
作为参数。您可以在 resolver function signature.
中阅读更多相关信息
所以基本上你要求 source
和 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
}
},
}
})
我有用户名和密码,我想从前端的反应发送到 graphql 后端。为此我正在使用 apollo 客户端
在我的客户端,我有这个
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)
突变返回 undefined
和带有用户名、密码字段的完整对象。
我不确定我哪里做错了。 非常感谢所有帮助。
resolve
函数有 source
、args
、context
和 info
作为参数。您可以在 resolver function signature.
所以基本上你要求 source
和 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
}
},
}
})