GraphQL 是一种用于 API 的查询语言,它允许客户端指定需要的数据,而不必提供特定的结构。这使得 API 更加灵活、可扩展和易于维护。在GraphQL的世界中,Prisma 是一个流行的 ORM(对象映射)工具。它可以帮助你轻松地管理数据库,并将其数据暴露给 GraphQL API。
本文将介绍如何使用 @graphql-tools/prisma-loader 这个 npm 包,在你的 GraphQL API 中轻松地集成 Prisma ORM。文章将讨论:
- 如何安装 @graphql-tools/prisma-loader;
- 如何配置 @graphql-tools/prisma-loader;
- 如何用 @graphql-tools/prisma-loader 集成 Prisma ORM;
- 如何在 Apollo Server 中使用 Prisma ORM 和 @graphql-tools/prisma-loader。
安装
首先,你需要安装 npm 包 @graphql-tools/prisma-loader 和其依赖项:
npm install --save @graphql-tools/prisma-loader graphql-tools graphql prisma-binding
配置
在集成 Prisma ORM 之前,我们需要配置 @graphql-tools/prisma-loader。这可以通过一个简单的 JSON 对象实现:
-- -------------------- ---- ------- ----- ------------------ - - --------- - ---- ---- - --- --- ------- ----- ------- ------ ------- ------- ------ -------- - ---- ---- - --- --- ------- ------ ------- ----- ------- ---------- -------- ------- ----- - ---- ----- - ------ -------- -------- ----- ---- ------ -------- -------- ----- ---- - ---- -------- - ---------------- -------- ------ --------- ----- ----------------- -------- ----- -------- --------- ----- ----- -------------- ---- ------ ------- ----- ------- ---------- --------- ---- -------------- ----- ---- - -- ---------- --- -------- --------- -- - ------ - ------- --- -------- --------- ---------------------------- ------- -------------------------- -- -- -- -------------- ------ -- - ----- -------- - ----------------------- ----- ---------- - ----------------------------- ---- ------ ----------- - --
该配置对象包含几个重要的 key:
typeDefs
:包含定义 GraphQL Schema 的 typeDefs;resolvers
:在本文中我们并不需要,因此保留为空对象;context
:包含一个函数,它将 Prisma 实例注入到 GraphQL 的 context 对象中;normalizeType
:在本文中也不需要,因此保留为空函数。
集成 Prisma ORM
现在我们已经定义了 @graphql-tools/prisma-loader 的配置对象,我们可以将它传递给 prismaLoader
函数:
-- -------------------- ---- ------- ----- - ------------ - - -------------------------- ----- - -------------------- - - ------------------------- ----- - ------------ - - ---------------------------------------- ----- - ------ - - -------------------------- ----- ------------------ - - -- -- ------ ----- -- -- ----- ------ - --- -------- --------- ---------------------------- ------- -------------------------- --- ----- ------ - ---------------------- --------- ----------------------------------- ---------- --- --- -------------- ------- -------- ------ -- --------------------
有了 prismaLoader
函数之后,我们就可以在 GraphQL 中轻松地使用 Prisma ORM 了。举个例子,在 GraphQL API 中使用如下的查询:
-- -------------------- ---- ------- ----- - ----- - -- ---- ----- ----- - -- ----- ---- --------- - - -
通过 @graphql-tools/prisma-loader 和 Prisma ORM 的帮助,这个查询将会被翻译成一个 SQL 查询语句,然后被发送到数据库中,最终返回一个 JSON 数据对象。
在 Apollo Server 中使用 Prisma ORM 和 @graphql-tools/prisma-loader
最后,我们可以在 Apollo Server 中配置和使用 Prisma ORM 和 @graphql-tools/prisma-loader。下面的代码展示如何实现这一点:
-- -------------------- ---- ------- ----- - ------------ - - ------------------------- ----- - ------------ - - -------------------------- ----- - -------------------- - - ------------------------- ----- - ------------ - - ---------------------------------------- ----- - ------ - - -------------------------- ----- ------------------ - - -- -- ------ ----- -- -- ----- ------ - --- -------- --------- ---------------------------- ------- -------------------------- --- ----- ------ - ---------------------- --------- ----------------------------------- ---------- --- --- -------------- ------- -------- ------ -- -------------------- ----- ------ - --- -------------- ------- -------- -- --- -- -- -- ------- ------ --- --- --------------------------------------- --- -- -- - --------------- ------ ----- -- --------- ---
这里,我们首先使用 @graphql-tools/prisma-loader 集成了 Prisma ORM。接下来,我们创建一个 Apollo Server 实例,并将 Prisma 实例注入到 context 对象中,以便在 GraphQL 解析器中使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedaf0fb5cbfe1ea0610f85