Добавление пользовательских преобразователей и типов GraphQL в схему Prisma/Nexus

Использование: TypeScript, Prisma, MySQL, GraphQLServer, ApolloClient, построение схемы следующим образом:

const schema = makePrismaSchema({
  // Provide all the GraphQL types we've implemented
  types: [Query, Mutation, User, Post],...

А потом:

  const server = new GraphQLServer({
    schema,
    context: { prisma }
  });

Как объединить это с пользовательскими распознавателями и типами, не связанными с SQL?

(Я хотел бы также вызвать некоторую конечную точку REST через GQL)

1 ответ

Решение

В то время как nexus был создан для использования вместе prismaЭто действительно просто построитель схемы. Вы можете легко использовать его для создания схемы, даже не используя Prisma. Например:

export const User = prismaObjectType({
  name: 'User',
  definition(t) {
    t.list.field('comments', {
      type: 'Comment',
      resolve(root, args, ctx) {
        return getComments();
      },
    });
  },
})

export const Comment = prismaObjectType({
  name: 'Comment',
  definition(t) {
    t.string('body');
  },
})

Вот getComments может возвращать массив объектов комментариев или Promise, который разрешается в один. Например, если вы вызываете какой-то другой API, вы обычно возвращаете Promise с результатами вызова. Как показано выше, распознаватель предоставляет родительское значение, аргументы поля и объект контекста - вы можете использовать любую из этой информации при определении способа разрешения конкретного поля.

Другие вопросы по тегам