mongodb - 如何设置多个 PRISMA 服务,一个用于测试,一个用于开发

标签 mongodb docker testing prisma prisma-graphql

我想有一个单独的数据库用于测试和开发。我想要实现的是拥有多个 Prisma 服务,一个用于测试,一个用于正常开发。

这是我的 docker-compose.yml 文件

version: '3'
services:
    prisma:
        image: prismagraphql/prisma:1.34
        restart: 'always'
        ports:
            - '4466:4466'
        environment:
            PRISMA_CONFIG: |
                port: 4466
                databases:
                  default:
                    connector: mongo
                    uri: ${MONGO_CONNECTION_STRING}
    prisma_testing:
        image: prismagraphql/prisma:1.34
        restart: 'always'
        ports:
            - '4400:4400'
        environment:
            PRISMA_CONFIG: |
                port: 4466
                databases:
                  default:
                    connector: mongo
                    uri: ${TEST_MONGO_CONNECTION_STRING}

我在文档中找不到任何东西来实现这一点。是否有推荐的流程或配置来实现这一目标?

最佳答案

最简单的方法是在运行 prisma deploy 之前将 prisma 的端点更改为指向不同的 prisma 服务器。 .在撰写本文时,prisma已从 prisma 重命名至prisma1 .您可以找到更多详细信息here ,因此请确保您拥有 prisma1安装为 devDependency .

Prisma 在他们的文档 here 中解释了如何实现相同的目标。 .

请按照以下步骤操作:

  • 安装 prisma1作为 devDependency yarn add prisma1 -D ,
  • 生成 prisma 客户端并指定要使用的配置文件 npx prisma1 generate -p path/to/prisma.test.yml
  • 运行您的测试

  • 在您的配置文件中,指定指向不同 prisma 服务器的不同端点,您可能希望有一个用于测试,另一个用于生产。

    不同配置文件的内容可能如下所示:

    prisma.test.yml(用于运行本地测试)
    endpoint: http://127.0.0.1:4466
    datamodel: datamodel.prisma
    databaseType: document
    secret: u4r4secret
    
    generate:
        - generator: javascript-client
          output: ./generated/prisma-client/
    

    prisma.yml(用于生产用途)
    endpoint: http://prod-server-ip:4466
    datamodel: datamodel.prisma
    databaseType: document
    secret: u4r4secret
    
    generate:
        - generator: javascript-client
          output: ./generated/prisma-client/
    

    同样重要的是,不要忘记在将代码推送到生产环境之前重新生成 prisma 客户端。一种快速简便的方法是使用 git hooks。

    建议:

    使用husky并添加 pre-commit钩子(Hook),它将在 git commit 之前运行,以始终确保您的 prisma 客户端在您投入生产之前始终具有生产端点。将以下部分添加到 package.json .

    "husky": {
        "hooks": {
          "pre-commit": "yarn prisma:generate -p path/to/prisma.yml"
        }
      }
    

    关于mongodb - 如何设置多个 PRISMA 服务,一个用于测试,一个用于开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61101376/

    相关文章:

    javascript - 如何异步运行 Docker 命令?

    javascript - 我们如何根据 mongoDB 数据增加语义 UI 进度条?

    Mongodb 聚合意外的数组结果 - 需要从 $lookup 返回一个对象而不是数组

    mongodb - OData Jaydata - odata 更新请求返回错误 404(SAPUI5,节点)

    postgresql - 无法从golang Docker容器连接到Postgres数据库

    node.js - 服务容器无法使用 docker-compose 连接到 MongoDB 容器

    java - 无需全面覆盖异常状态即可查找代码片段的工具

    c# - 测试 Entity Framework 5 - 内存数据库是一个不错的选择

    node.js - 在 MongoDB 中查询具有非空数组交集的文档

    firebase - @firebase/testing - 如何在 firestore 规则测试中使用 auth 自定义声明?