Добавление пользовательских преобразователей и типов 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 с результатами вызова. Как показано выше, распознаватель предоставляет родительское значение, аргументы поля и объект контекста - вы можете использовать любую из этой информации при определении способа разрешения конкретного поля.