Prisma:如何使架构文件中的数据库 URL 更加动态?

问题描述 投票:0回答:2

我使用 Prisma 和 Postgres 作为数据库。

目前,我的 schema.prisma 文件的 DATABASE_URL 如下所示 DATABASE_URL="postgresql://admin:admin@localhost:5432/nestjs?schema=public"

schema.prisma

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}
 
generator client {
  provider = "prisma-client-js"
}

我想知道是否可以使架构文件中的 Postgres URL 更加动态。 有没有一种方法可以在架构文件中包含多个环境变量? 例如

datasource db {
  provider = "postgresql"
  url      = `${${env("DATABASE_DOMAIN")}:${env("DATABASE_USER")}@${env("DATABASE_URL")}/nestjs`
}

generator client {
  provider = "prisma-client-js"
}
postgresql prisma
2个回答
3
投票

现在使其正常工作的唯一方法是提供一个包含完整数据库 URL 的环境变量。 Prisma 中尚未实现字符串连接。

因此您可以使用

.env
文件来准备环境变量(Prisma v2.7.0+):

# .env
DATABASE_URL=${DB_SCHEMA}://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/nestjs

或者您可以将其导出为系统变量:

# Unix
export DATABASE_URL="$DB_SCHEMA://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/nestjs"
# Windows
set "DATABASE_URL=%DB_SCHEMA%://%DB_USER%:%DB_PASSWORD%@%DB_HOST%:%DB_PORT%/nestjs"

0
投票

我的问题是,这个应用程序在哪里? DATABASE_URL 不是一个环境变量吗?如果是这样,那么在 Kubenetes 集群中,您可以有不同的部署,根据应用程序所在的位置填充该变量。 因此,当您的应用程序位于 DEV、CERT 或 PROD 中时,无论您的配置如何设置,您的值都将被绑定回 DATABASE_URL,因为通过 Kubenetes 注入到容器中。

© www.soinside.com 2019 - 2024. All rights reserved.