2

使用:TypeScriptPrismaMySQLGraphQLServerApolloClient,以这种方式构建模式:

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

接着:

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

如何将其与与 SQL 无关的自定义解析器和类型结合起来?

(我也想通过 GQL 调用一些 REST 端点)

4

1 回答 1

3

虽然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。如上所示,解析器公开了父值、字段的参数和上下文对象——您可以使用这些信息中的任何一个来确定如何解析特定字段。

于 2019-05-12T16:59:07.403 回答