免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

Prisma Demo Server 快速上手:安装 CLI、部署服务并探索自动生成的 GraphQL API

Prisma Demo Server 快速上手:安装 CLI、部署服务并探索自动生成的 GraphQL API 后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载导读本文以 Prisma 官方教程《Setup PrismaDemo Server》为核心完整讲解如何使用 Prisma CLI 将一个最小 Prisma 服务部署到 Prisma Cloud 托管的Demo serverdemo-eu1/demo-us1并通过 GraphQL Playground 对自动生成的 CRUD API 执行查询与变更。读完本文你将掌握prisma init、prisma deploy、prisma playground三个核心命令的完整使用流程理解prisma.yml与datamodel.prisma或datamodel.graphql两份文件的作用并了解数据模型与 API schema 之间的联动关系。Demo server 是 Prisma Cloud 提供的免费托管环境适合学习、原型验证与开发调试它带有速率限制和存储容量上限不应用于生产环境。前置知识Demo server 是什么在开始操作之前先明确 Demo server 的定位它是运行在 Prisma Cloud 中的托管环境由 Prisma 官方维护用户无需自建服务器与数据库。从源码结构看Demo server 对应的集群名称为prisma-eu1AWS eu-west-1 区域与prisma-us1AWS us-west-2 区域CLI 交互界面中显示为demo-eu1与demo-us1见 EndpointDialog.ts 中的encodeMap/decodeMap映射。免费使用但受限存在速率限制rate limited与存储上限只适合学习、原型和开发不适合生产负载。CLI 在询问 Demo server 区域时会分别对两个集群执行延迟探测源码中通过getPing(EU_WEST_1)与getPing(US_WEST_2)实现并把各自的延迟毫秒数展示给你方便你选择离自己更近、性能更好的那个区域。Step 1安装 Prisma CLIPrisma 服务的管理完全依赖 Prisma CLI。它通过 npm 或 yarn 全局安装。npm install -g prisma # 或 # yarn global add prisma安装完成后在终端输入prisma --help即可看到可用的命令组。本教程用到的三个命令分别是prisma init初始化bootstrap一个新的 Prisma 服务prisma deploy把本地定义的数据模型与配置部署到目标 Prisma serverprisma playground为当前服务打开交互式 GraphQL IDE。说明本仓库对应的 CLI 版本为 Prisma 1.xprisma1命名空间时代命令与文档以当前仓库 prisma-cli-core/src/commands 中的实现为准。Step 2用prisma init初始化 Prisma 服务打开终端进入任意你希望创建项目的目录然后执行prisma init hello-worldinit命令接受一个可选的目录名参数dirName源码中会将其拼接为config.cwd dirName /作为新服务的定义目录如果不传目录名则在当前目录初始化见 init.ts。命令执行后CLI 会进入交互式流程选择服务器类型询问你是要使用现有的 Prisma server还是新建一个。这里选择Demo server对应源码EndpointDialog中的Demo server MySQL database选项即 Prisma Cloud 托管的免费 MySQL 环境。注册 Prisma Cloud如果你尚未注册CLI 会自动打开浏览器引导你完成注册登录源码中通过client.login()完成认证。选择区域登录成功后选择demo-eu1或demo-us1CLI 会同时显示两个服务器的延迟以供参考。确认 service 名称与 stageCLI 会提示你配置服务名默认取当前文件夹名hello-world与 stage默认dev连续按两次Enter接受默认值即可。上述交互逻辑集中实现在 EndpointDialog.tsgetClusterQuestion负责组装选项列表askForDemoCluster负责区域选择与延迟展示askForService/askForStage负责服务名与 stage 的默认值确认。生成的目录结构与文件prisma init只负责生成文件并不会真正部署服务。它会在hello-world目录下创建两个文件文件作用prisma.yml服务的根配置文件声明服务名称、HTTP 端点、secret、部署目标等datamodel.graphql数据模型定义文件文件名可自定义如types.graphql使用 GraphQL SDL 编写从源码看init.ts 会根据数据库类型选择不同的数据模型样板关系型数据库使用 datamodel.prisma内容为type User { id: ID! id name: String! }MongoDB文档型使用boilerplate/datamodel-mongo.prisma。生成的prisma.yml示例endpoint: https://eu1.prisma.sh/alice-doe-fd2dcf/hello-world/dev datamodel: datamodel.graphql注意alice-doe-fd2dcf是你 Prisma Cloudworkspace工作区的 ID每个用户不同因此你的 endpoint 会与示例略有差异。endpoint 的完整格式为https://区域.prisma.sh/workspace-id/service/stage。两个核心属性的说明endpointPrisma API 的 HTTP 端点即客户端发起 GraphQL 请求的地址。datamodel数据模型文件相对于prisma.yml的路径prisma deploy会读取该文件并把其中的类型定义同步到服务端。更多配置项如secret、generate、seed、hooks等可参阅仓库中的 prisma.yml 参考文档。生成的datamodel.graphql示例type User { id: ID! unique name: String! }数据模型描述应用领域内的实体类型。这里定义了一个极简的User类型id: ID!非空 IDunique指令保证数据库中不会存在两条相同id的记录该约束由 Prisma 在服务端始终强制保证在较新版本的样板中对应写法为id: ID! id。name: String!非空的字符串字段。数据模型是后续一切 API 能力的基础任何对它的修改并重新prisma deploy都会同步更新 Prisma GraphQL API 的 schema。Step 3用prisma deploy部署服务prisma init只是生成了文件此时User类型的 CRUD GraphQL API 尚不可用。真正让服务“上线”需要执行部署cd hello-world prisma deploydeploy命令的完整流程在 deploy.ts 中实现加载并解析prisma.yml通过this.definition.load(...)若缺少datamodel属性会直接报错若prisma.yml中已有 endpoint则直接解析出服务名、stage 与 workspace否则进入交互式对话框补充调用 Prisma server 的 Management API 创建/更新项目addProject再通过client.deploy(...)提交数据模型definition.typesString并执行数据库迁移迁移过程中会轮询迁移状态出现错误时终止并输出错误信息。prisma deploy还支持若干常用 flags可用于更精细的控制Flag说明-f, --force接受 schema 变更可能带来的数据丢失-d, --dry-run只做部署预演不真正应用变更-n, --new强制进入交互模式重新选择 cluster-j, --jsonJSON 格式输出--no-seed首次部署时禁用 seed--no-migrate禁用迁移要求 Prisma 1.26 及以上--no-generate禁用隐式的客户端代码生成-e, --env-file path注入指定的.env文件中的环境变量-p, --project path指定 Prisma 定义文件的路径部署成功后你的 Prisma API 即可对外接收 queries、mutations 与 subscriptions。Step 4用 GraphQL Playground 探索 API服务部署好了如何知道它暴露了哪些能力Prisma 为数据模型中的每个类型自动生成一整套 CRUD 操作。以User类型为例至少会生成以下操作操作类型作用userQuery按id或其他unique字段查询单个User节点usersQuery查询User节点列表createUserMutation创建新的User节点updateUserMutation更新已有User节点deleteUserMutation删除已有User节点注意以上列表并非全部。Prisma API 还暴露了批量更新/删除等更多操作但所有操作的本质都是对数据模型中定义的类型做 create / read / update / delete。由于 API 通过 HTTP 暴露理论上可以用curl、Postman 等工具调用但 GraphQL 有更专业的交互工具 ——GraphQL Playground。在hello-world目录下执行prisma playground命令的行为在 playground/index.ts 中实现若本机已安装 Playground 独立桌面应用macOS 路径为/Applications/GraphQL Playground.app/...则以graphql-playground://协议打开否则启动一个本地 Express 服务默认端口3000可用--port指定通过graphql-playground-middleware-express提供 Web 版 Playground并自动在浏览器中打开http://localhost:port/playground请求经由本地代理转发到prisma.yml中的 endpoint源码中的requestProxy因此不需要在 Playground 里手工配置地址。GraphQL API 天然是“自文档化”的schema 定义了所有操作、输入参数与返回类型Playground 可以据此自动生成 API 文档。点击窗口右侧绿色的SCHEMA按钮即可打开文档面板左侧第一列是 API 支持的全部操作可以逐层下钻查看每个操作的参数与返回类型细节。Step 5发送 queries 与 mutations查询所有用户在左侧编辑器输入以下 query 并点击Play按钮或按CMDEnterquery { users { name } }此时数据库为空服务器返回空列表{ data: { users: [] } }创建第一个用户打开 Playground 新标签页输入以下 mutation 并发送mutation { createUser(data: { name: Sarah }) { id } }这次响应包含真实数据id由服务器在创建节点时生成全局唯一 ID每次运行都会不同{ data: { createUser: { id: cjc69nckk31jx01505vgwmgch } } }切回之前的usersquery 标签页再次发送刚刚创建的User节点就会出现在响应中。过滤、排序与分页Prisma API 还内置了强大的过滤filtering、排序ordering与分页pagination能力都通过usersquery 的输入参数体现按条件过滤查询name包含字符串ra的所有User节点query { users(where: { name_contains: ra }) { id name } }按名称降序排列query { users(orderBy: name_DESC) { id name } }分页取列表中第 20-29 条记录query { users(skip: 20, first: 10) { id name } }总结与下一步至此你已完成一条完整的 Prisma 上手链路全局安装 Prisma CLI用prisma init初始化服务生成prisma.yml与数据模型文件选择demo-eu1或demo-us1区域把服务部署到 Prisma Cloud 的免费 Demo server用prisma playground打开交互式 IDE通过自动生成的文档了解 CRUD API执行 queries、mutations并体验过滤、排序与分页能力。关键要点回顾数据模型即 API 契约修改数据模型并重新prisma deployAPI schema 会自动同步更新Demo server 仅用于非生产场景免费、有速率限制与存储上限三个核心命令prisma init脚手架、prisma deploy上线、prisma playground交互调试。接下来你可以基于这套 API 继续构建完整的 GraphQL 服务例如用 graphql-yoga 等库编写 resolver 层把 Prisma 作为数据访问层相关操作指南可参阅仓库中的 01-Setup-Prisma 目录 下的其他教程连接已有数据库、创建新数据库等场景。赞分享后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载相关推荐Prisma 快速入门实战将 Prisma 服务部署到 Demo Server 并体验 GraphQL APIPrisma 快速入门实战将 Prisma 服务部署到 Demo Server 并体验 GraphQL API 本篇技术指南完整讲解如何从零开始使用 Pris后端数据库GraphQL使用 Prisma Demo Server 快速部署 GraphQL 数据库服务从 CLI 安装到 Playground 实战使用 Prisma Demo Server 快速部署 GraphQL 数据库服务从 CLI 安装到 Playground 实战 在 Prisma 1.x 时代后端数据库GraphQL使用 Prisma Demo Server 快速部署你的第一个 GraphQL CRUD 服务Prisma 1.x 完整上手指南使用 Prisma Demo Server 快速部署你的第一个 GraphQL CRUD 服务Prisma 1.x 完整上手指南 本指南以 Prisma 1后端数据库GraphQL上一篇【亲测免费】 推荐文章探索电磁仿真新境界 —— PyAEDT下一篇探索高性能的未来V8 JavaScript 引擎——谷歌开源杰作创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表