我使用 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"
}
现在使其正常工作的唯一方法是提供一个包含完整数据库 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"
我的问题是,这个应用程序在哪里? DATABASE_URL 不是一个环境变量吗?如果是这样,那么在 Kubenetes 集群中,您可以有不同的部署,根据应用程序所在的位置填充该变量。 因此,当您的应用程序位于 DEV、CERT 或 PROD 中时,无论您的配置如何设置,您的值都将被绑定回 DATABASE_URL,因为通过 Kubenetes 注入到容器中。