前言
在使用 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