Как мутация GraphQL ассоциируется с Type - PullRequest
0 голосов
/ 05 мая 2019

Когда я настраиваю свою схему следующим образом:

type Mutation {
    createUser(data: CreateUserInput!): User!
}

type User {
    id: ID!
    name: String!
    password: String!
    email: String!
    posts: [Post!]!
    comments: [Comment!]!
}

и мой распознаватель:

const Mutation = {
    async createUser(parent, args, { prisma }, info) {
        if(args.data.password.length < 8) {
            throw new Error("Pasword must be 8 characters or longer")
        }
        return prisma.mutation.createUser({ 
            data: {
                ...args.data,
                password
            } 
        })
    }
}

как GraphQL узнает, что createUser связано с моей User моделью? Я мог бы настроить его так, чтобы createUser возвращал токен вместо пользователя (после генерации токена), или я мог переименовать createUser в createPerson. Я никогда не определял связь между createUser и User. Я не уверен, как мой ввод данных через createUser направляется для сохранения в таблицу user, а не в другую таблицу.

1 Ответ

1 голос
/ 06 мая 2019

Между этими двумя понятиями нет никакой связи.

Ваш распознаватель мог бы так же легко вернуть простой объект с некоторыми фиктивными данными:

async createUser(parent, args, { prisma }, info) {
  ...
  return { 
    id: 1,
    name: 'Kevvv',
    password: 'password',
    email: 'kevvv@stackoverflow.com',
  }
}

или использовать другие способы извлечения пользователя.:

async createUser(parent, args, { prisma }, info) {
  ...
  return fetchUserFromAPI()
  // or some other data source like a DB
}

prisma.mutation.createUser возвращает Обещание, которое разрешается в объект, который представляет созданного пользователя.У этого объекта есть свойства, соответствующие типу User, который вы указали в своей схеме, но в остальном в этом нет ничего «особенного».

...