GraphQL Query Format Issue - PullRequest
       1

GraphQL Query Format Issue

0 голосов
/ 06 февраля 2019

Я новичок в 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?

Спасибо за помощь в том, что я не понимаю здесь!

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

Что следует за ключевым словом mutation - это имя вашей операции, которое является произвольным и может быть даже опущено напрямую.Вам все еще нужно определить, какое поле или поля в типе мутации вы запрашиваете.В этом случае поле, которое нам нужно, это createUser, поэтому нам нужно сделать что-то вроде этого:

mutation SomeName ($user: UserInput) { 
  createUser(user: $user) {
    name,
    _id
  }
}

Обратите внимание, что мы также должны определить наши переменные в первой строке.Затем мы можем использовать эти переменные в любом месте нашего запроса.Также обратите внимание, что, основываясь на вашем вопросе, я понятия не имею, какой на самом деле будет тип для $user - вам нужно изменить UserInput, чтобы он соответствовал вашей схеме.

0 голосов
/ 06 февраля 2019

Поскольку я не знаю подробно о ваших схемах, если вы сделаете свою схему такой (требуется адрес электронной почты, требуется возраст):

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}
},
0 голосов
/ 06 февраля 2019

Было бы что-то вроде этого:

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);
      });
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...