对于GraphQL,JS和后端,我通常是新手。我正在尝试查询BE演示程序,但我无法通过它,我认为这是语法上的误会...
函数看起来像:
Mutation: {
createUser: async (parent, { user }, context, info) => {
const newUser = await new User({
name: user.name,
email: user.email,
age: user.age
});
return new Promise((resolve, reject) => {
newUser.save((err, res) => {
err ? reject(err) : resolve(res);
});
});
},
我的查询如下:
mutation createUser(user: $user) {
name,
_id
}
的var属性为:
{
"user": {
"id": 1,
"name": "Jack"
}
}
我的理解是,该突变想要获取一个用户对象,所以我通过$ user var发送用户查询?
感谢一些我在这里不了解的帮助!
答案 0 :(得分:1)
关键字mutation
之后是您的操作的名称,该名称是任意的,甚至可以完全省略。您仍然需要实际确定要查询的突变类型中的哪些字段。在这种情况下,我们想要的字段是createUser
,因此我们需要执行以下操作:
mutation SomeName ($user: UserInput) {
createUser(user: $user) {
name,
_id
}
}
请注意,我们还必须在第一行中定义变量。然后,我们可以在查询中的任何地方使用这些变量。还要注意,根据您的问题,我不知道$user
的类型实际上是什么-您需要更改UserInput
以匹配您的模式。
答案 1 :(得分:0)
会是这样吗?
Mutation: {
createUser(user, context, info) => {
const newUser = await new User({
name: user.name,
email: user.email
age: user.age
});
return Promise.resolve()
.then((data) => {
newUser.save(data);
})
.catch((err) => {
console.log(err);
});
});
}
答案 2 :(得分:0)
因为我不了解您的架构的详细信息,如果您将架构设为这样(需要电子邮件,需要年龄):
type User{
_id:ID!
name:String!
email:String!
age:Int!
}
然后,您应该在突变参数中传递电子邮件和年龄信息。
,似乎在使用猫鼬。然后,您可以这样编写代码:
Mutation: {
createUser: async (parent, { user }, context, info) => {
const newUser = await new User({
name: user.name,
email: user.email,
age: user.age
});
const result = newUser.save()
return {...result._doc, id:result.id}
},