【问题标题】:Upgrade Prisma 1 to Prisma 2 with Apollo + GraphQL使用 Apollo + GraphQL 将 Prisma 1 升级到 Prisma 2
【发布时间】:2021-07-04 00:21:34
【问题描述】:

我在从 Prisma 1 升级到 Prisma 2 时遇到问题。 文档对我来说相当复杂。 我目前有一个使用的小项目:

 "dependencies": {
    "bcryptjs": "2.4.3",
    "graphql-yoga": "1.18.3",
    "jsonwebtoken": "8.5.1",
    "prisma-binding": "1.5.19"
  },
  "devDependencies": {
    "dotenv": "5.0.1",
    "graphql-cli": "2.17.0",
    "nodemon": "1.19.4",
    "npm-run-all": "4.1.5",
    "prisma": "^1.34.10"
  }

我的 prisma.yml :

endpoint: ${env:PRISMA_ENDPOINT}

secret: ${env:PRISMA_SECRET}

datamodel: datamodel.graphql

hooks:
  post-deploy:
    - prisma generate

generate:
  - generator: graphql-schema
    output: ../src/generated/prisma.graphql

我用过脚本:

  "scripts": {
    "start:dev": "nodemon -e js,graphql -x node -r dotenv/config src/index.js",
    "start": "node src/index.js",
    "debug": "nodemon -e js,graphql -x node --inspect -r dotenv/config src/index.js",
    "playground": "graphql playground",
    "dev": "npm-run-all --parallel start playground",
    "deploy": "prisma1 deploy --env-file .env"
  },

还有这个graphqlconfig

projects:
  app:
    schemaPath: "src/schema.graphql"
    extensions:
      endpoints:
        default: "http://localhost:4000"
  prisma:
    schemaPath: "src/generated/prisma.graphql"
    extensions:
      prisma: database/prisma.yml

如何更新 prisma? 知道我的前端是基于 VueJS 和 ApolloClient、graphlq、graphql-tag

非常感谢你,后端部分对我来说并不简单

And here is my tree structure

编辑

感谢您的回答。不错,@nburk

但我在第三步遇到问题:https://www.prisma.io/docs/guides/upgrade-guides/upgrade-from-prisma-1/upgrading-the-prisma-layer-postgres

(连接网址)

以前我不使用“docker-compose”。我使用 Prisma 在 Heroku 上部署了我的 front + back + DB

const { Prisma } = require("prisma-binding");
const resolvers = require("./resolvers");

// GraphQL Yoga Server
const server = new GraphQLServer({
  typeDefs: "src/schema.graphql",
  resolvers,
  context: (req) => ({
    ...req,
    db: new Prisma({
      typeDefs: "src/generated/prisma.graphql", // DB Prisma Schema
      endpoint: process.env.PRISMA_ENDPOINT, // Prisma Service
      secret: process.env.PRISMA_SECRET, // Prisma Secret
      debug: true,
    }),
  }),
});


server.start(() =>
  console.log(`Server is running on ${process.env.PRISMA_ENDPOINT}`)
);

使用 Heroku 上托管的数据库(.env 文件)

PRISMA_ENDPOINT="https://lprojet-name-db.herokuapp.com/database/prod"

当我使用 npx prisma introspect 时出现此错误

Introspecting based on datasource defined in prisma/schema.prisma …
Error: P1001

无法访问位于 `'localhosh':'5432' 的数据库服务器

请确保您的数据库服务器在 'localhost':'5432' 上运行 我认为问题来自 schema.prisma,它需要有一个以 postgresql:// 开头的 url,但使用 Prisma1 我不需要经历那个。

如何转换我的旧数据库 URL(当前托管在 Heroku 上)?

谢谢

编辑 2

我用过

DATABASE_URL=postgres://..........eu-west-1.compute.amazonaws.com:5432/d9ptc61fera9g1

我有一个“数据库为空”的错误,但我的数据库不是空的。这个 UR 来自 Heroku 数据库配置

【问题讨论】:

    标签: graphql upgrade apollo prisma prisma2


    【解决方案1】:

    来自 Prisma 的 Nikolas 来了!

    我们编写了详尽的升级文档,指导您完成升级过程。以下是您可以遵循的一些指南:

    1. How to upgrade:提供总体概述并解释不同的升级策略
    2. Upgrading the Prisma layer:解释如何使用 Prisma 升级 CLI 调整数据库架构
    3. prisma-binding to SDL-first:解释如何升级 GraphQL 架构和解析器

    如果您在此过程中遇到任何问题,请随时跟进,我们很乐意为您提供帮助 :)

    【讨论】:

    • 嗨!回答如下 ;)
    猜你喜欢
    • 2020-10-10
    • 2021-10-18
    • 2022-07-10
    • 2022-01-27
    • 1970-01-01
    • 2018-09-05
    • 2019-06-16
    • 2019-07-28
    • 2019-06-18
    相关资源
    最近更新 更多