Prisma 服务及CLI

前言:本文主要讲述 Primsa 的场景用例,主要优点以及如何将它适配到您的技术栈中。

Prisma 和 GraphQL

Prisma 适用 GraphQL 作为通用数据库抽象,这意味着它将您的数据库转换为GraphQL API,使您能够:

  • 使用 GraphQL queries 和 mutations 来读写数据库

  • 使用 GraphQL subscriptions 来接收数据库事件的实时更新信息

  • 使用 GraphQL SDL 执行迁移和数据建模

当一个 Prisma client 发送请求到 Prisma server,它实际上会生成 GraphQL 操作,这些操作会被发送到 Prisma 的 GraphQL API。然后,client 会将 GraphQL 响应转换成所期望的数据结构,并从调用的方法返回它。

Prisma 服务

数据库的 GraphQL 映射由 Prisma 服务提供,每个服务都为数据库提供相应的 GraphQL CRUD 映射。GraphQL API 是自动生成的,并为所服务的 datamodel 中的每个 model 提供 CRUD 操作。

Prisma 服务在 Prisma server 上运行。Prisma server 可以配置为托管多个 Prisma 服务。

img

Prisma 服务使用两个组件配置:

  • prisma.yml : Prisma 服务的根配置文件(包括服务的端点、服务机密,数据模型文件的路径,……)

  • Datamodel: 在 datamodel 中,您会定义数据模型,Prisma 会使用该模型来为您的数据库生成 GraphQL API。它使用声明性 GraphQL SDL 语法,通常存储在一个名为 datamodel.prisma 的文件中。

一个极简的 prisma.yml 看起来像这样:

endpoint: http://localhost:4466
datamodel: datamodel.prisma
secret: mysecret42

其中:

  • endpoint : 应将服务部署到的 Prisma server 的HTTP endpoint。此端点对外暴露 service 的Prisma API。

  • datamodel : datamodel 文件(生成 GraphQL CRUD / realtime API 的基础)的路径配置

  • secret : 用于确保 service GraphQL API 端点的安全而设置的基于 JWT-based 签名校验的 service 秘钥。如果未设置 secret ,那么这个service 不需要权限校验就可以访问

Prisma CLI安装

可以从 NPM 仓库安装 Prisma CLI 。

NPM

npm install -g prisma

Yarn

yarn global add prisma

概要

$ prisma

GraphQL Database Gateway (https://www.prisma.io)

Usage: prisma COMMAND

Service:
  init            Initialize a new service
  deploy          Deploy service changes (or new service)
  introspect      Introspect database schema(s) of service
  info            Display service information (endpoints, cluster, ...)
  token           Create a new service token
  list            List all deployed services
  delete          Delete an existing service

Data workflows:
  playground      Open service endpoints in GraphQL Playground
  seed            Seed a service with data specified in the prisma.yml
  import          Import data into a service
  export          Export service data to local file
  reset           Reset the stage data

Cloud:
  login           Login or signup to the Prisma Cloud
  logout          Logout from Prisma Cloud
  console         Open Prisma Console in browser
  account         Display account information

Use prisma help [command] for more information about a command.
Docs can be found here: https://bit.ly/prisma-cli-commands

Examples:

- Initialize files for a new Prisma service
  $ prisma init

- Deploy service changes (or new service)
  $ prisma deploy

快速开始

安装完成后,执行以下命令让 Prisma API 启动并运行,然后便可以开始向其发送 queries 和 mutations :

prisma init hello-world
# Select a *demo server* from the interactive prompt
cd hello-world
prisma deploy
prisma playground

您现在可以开始向 Prisma API 发送 queries 和 mutations。有关更全面的演示,请查看“入门”部分。

graphql-config 的使用

Prisma CLI 集成了 graphql-config。如果您的项目使用 .graphqlconfig-file ,您可以使用 prisma 扩展并将其指向您的prisma.yml:

projects:
  prisma:
    schemaPath: prisma.graphql
    extensions:
      prisma: prisma.yml

为 CLI 命令行添加 HTTP 代理

Prisma CLI 支持自定义HTTP代理。当在公司防火墙后面时,这尤其重要。

要激活代理,请提供环境变量 HTTP_PROXYHTTPS_PROXY。该行为与 npm CLI 对该行为的处理非常相似。

可以提供以下环境变量:

  • HTTP_PROXY 或者 http_proxy:http 代理 URL,例如 http://localhost:8080

  • HTTPS_PROXY 或者 https_proxy:https 代理 URL,例如 https://localhost:8080

  • NO_PROXY 或者 no_proxy:要禁用某些 URLs 的代理,请为 NO_PROXY 提供一个 glob 通配符,如 *。

要获得简单的本地代理,您可以使用该 proxy 模块:

npm install -g proxy
DEBUG="*" proxy -p 8080
HTTP_PROXY=http://localhost:8080 HTTPS_PROXY=https://localhost:8080 prisma deploy

参考链接:https://github.com/graphql/graphql-js