解决 GraphQL 查询与 Prisma models 同步的问题

前言

在使用 GraphQL 和 Prisma 的时候,我们通常会将 GraphQL 查询和 Prisma models 定义在不同的文件中。这会导致一个问题:当我们修改了 Prisma models 的定义,但并没有同步更新 GraphQL 查询时,会导致查询出现错误。本文将介绍如何解决这个问题。

解决方法

解决这个问题最简单的方法就是使用代码生成器。具体来说,我们可以使用graphql-codegen来生成 GraphQL 查询。以下是具体步骤:

步骤一:安装依赖

npm install graphql @prisma/client graphql-codegen @graphql-codegen/cli

步骤二:创建配置文件

在项目根目录下创建一个配置文件 codegen.yml,并添加以下内容:

overwrite: true
schema: "src/schema.graphql"
documents: "src/**/*.graphql"
generates:
  src/generated/graphql.ts:
    plugins:
      - "typescript"
      - "typescript-operations"
      - "typescript-graphql-request"

注意,这里的 schema 配置项指定了我们的 GraphQL schema 文件路径,documents 配置项指定了我们的 GraphQL 查询文件路径。我们还指定了代码生成结果的输出路径。

步骤三:生成代码

接下来,我们执行以下命令以生成代码:

npx graphql-codegen

如果一切顺利,我们应该可以在指定的输出路径下看到生成的代码文件。

步骤四:使用生成代码

最后,我们只需要在我们的代码中使用生成的代码即可。例如,假设我们需要查询用户列表,那么我们可以这样写:

import { gql } from 'graphql-request';
import { request } from './generated/graphql';

const query = gql`
  query {
    users {
      id
      name
      email
    }
  }
`;

request(query).then(data => {
  console.log(data.users);
});

这里的 request 函数是由 typescript-graphql-request 插件生成的。它将我们的 GraphQL 查询转换为了一个函数,我们可以通过它来向 GraphQL 服务器发送请求。

至此,我们已经成功解决了 GraphQL 查询与 Prisma models 同步的问题。

总结

本文介绍了如何使用代码生成器解决 GraphQL 查询与 Prisma models 同步的问题。希望本文可以帮助大家更好地使用 GraphQL 和 Prisma。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65afb191add4f0e0ff92556d