TypeScriptとPostgresSQLを使って既存のデータベースを接続する
データベースの接続
データベースを接続するには、Prismaスキーマのdatasource
ブロックにあるurl
フィールドをデータベースの接続URLに設定する必要があります。
prisma/schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
この場合、url
は.env
で定義されている環境変数経由で設定されます。
.env
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"
次に、接続URLを自身のデータベースを指すように調整する必要があります。
接続URL
データベースの接続URLの形式は、使用するデータベースによって異なります。PostgreSQLの場合、以下のようになります(すべて大文字で書かれた部分は、特定の接続詳細のプレースホルダーです)。
postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA
注: ほとんどの場合、
postgres://
とpostgresql:// URI scheme designators interchangeably
を交換して使用できますが、データベースがホストされている方法によっては、特定のURIスキームが必要になる場合があります。
PostgreSQL接続URLのschema
パラメータに何を指定すべきかわからない場合は、省略しても問題ありません。その場合、デフォルトのスキーマ名public
が使用されます。
例として、HerokuでホストされているPostgreSQLデータベースの場合、接続URLは次のようになるかもしれません。
.env
DATABASE_URL="postgresql://opnmyfngbknppm:XXX@ec2-46-137-91-216.eu-west-1.compute.amazonaws.com:5432/d50rgmkqi2ipus?schema=hello-prisma"
macOSでPostgreSQLをローカルで実行している場合、ユーザー名とパスワード、およびデータベース名は、通常、OSの現在のユーザーに対応します。例えば、ユーザーがjanedoe
という名前であると仮定すると、次のようになります。
.env
DATABASE_URL="postgresql://janedoe:janedoe@localhost:5432/janedoe?schema=hello-prisma"