CLIから
このページでは、prisma init --db
でセットアップした後の Prisma Postgres のステップバイステップガイドを提供します。
- Prisma ORM を使用して TypeScript アプリをセットアップする
- データベースのスキーマを移行する
- TypeScript からデータベースにクエリを実行する
前提条件
このガイドは、prisma init --db
で Prisma Postgres インスタンスをセットアップ済みであることを前提としています。
npx prisma@latest init --db
このコマンドが終了すると
- Prisma Data Platform にログインしました。
- 新しい Prisma Postgres インスタンスが作成されました。
prisma/
フォルダが作成され、空のschema.prisma
ファイルが含まれています。DATABASE_URL
環境変数が.env
ファイルに設定されました。
1. プロジェクトディレクトリを整理する
プロジェクトを配置したいフォルダ内で prisma init --db
コマンドを実行した場合、このステップをスキップして 次のセクションに進んでください。
意図したプロジェクトディレクトリの外 (例: ホームフォルダや別の場所) でコマンドを実行した場合、生成された prisma
フォルダと .env
ファイルを専用のプロジェクトディレクトリに移動する必要があります。
新しいフォルダ (例: hello-prisma
) をプロジェクトを配置したい場所に作成し、必要なファイルをそこに移動します。
mkdir hello-prisma
mv .env ./hello-prisma/
mv prisma ./hello-prisma/
プロジェクトフォルダに移動します
cd ./hello-prisma
これでプロジェクトが正しい場所に配置されたので、セットアップを続行します。
2. プロジェクトをセットアップする
2.1. TypeScript をセットアップする
TypeScript プロジェクトを初期化し、Prisma CLI を開発依存関係として追加します。
npm init -y
npm install typescript tsx @types/node --save-dev
これにより、TypeScript アプリの初期セットアップを含む package.json
ファイルが作成されます。
次に、プロジェクトに tsconfig.json
ファイルを使用して TypeScript を初期化します。
npx tsc --init
2.2. Prisma ORM をセットアップする
Prisma Postgres を使用するために必要な依存関係をインストールします。
npm install prisma --save-dev
npm install @prisma/extension-accelerate
2.3. TypeScript スクリプトを作成する
ルートディレクトリに index.ts
ファイルを作成します。これは、Prisma ORM を使用してアプリケーションにクエリを実行するために使用されます。
touch index.ts
3. データベーススキーマを移行する
単純な User
モデルを含めるように prisma/schema.prisma
ファイルを更新します。
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}
モデルを追加した後、Prisma Migrate を使用してデータベースを移行します。
npx prisma migrate dev --name init
4. Prisma ORM でクエリを送信する
次のボイラープレートを index.ts
に貼り付けます。
import { PrismaClient } from '@prisma/client'
import { withAccelerate } from '@prisma/extension-accelerate'
const prisma = new PrismaClient().$extends(withAccelerate())
async function main() {
// ... you will write your Prisma ORM queries here
}
main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})
このコードには、スクリプトの最後に呼び出される main
関数が含まれています。また、データベースにクエリを送信するために使用する PrismaClient
をインスタンス化します。
4.1. 新しい User
レコードを作成する
データベースに新しい User
レコードを作成し、結果のオブジェクトをコンソールに出力する小さなクエリから始めましょう。次のコードを index.ts
ファイルに追加します。
import { PrismaClient } from '@prisma/client'
import { withAccelerate } from '@prisma/extension-accelerate'
const prisma = new PrismaClient().$extends(withAccelerate())
async function main() {
const user = await prisma.user.create({
data: {
name: 'Alice',
email: 'alice@prisma.io',
},
})
console.log(user)
}
main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})
次に、次のコマンドでスクリプトを実行します。
npx tsx index.ts
{ id: 1, email: 'alice@prisma.io', name: 'Alice' }
素晴らしい!Prisma Postgres で最初のデータベースレコードを作成しました!🎉
4.2. すべての User
レコードを取得する
Prisma ORM は、データベースからデータを読み取るためのさまざまなクエリを提供します。このセクションでは、特定のモデルのデータベース内のすべてのレコードを返す findMany
クエリを使用します。
以前の Prisma ORM クエリを削除し、代わりに新しい findMany
クエリを追加します。
import { PrismaClient } from '@prisma/client'
import { withAccelerate } from '@prisma/extension-accelerate'
const prisma = new PrismaClient().$extends(withAccelerate())
async function main() {
const users = await prisma.user.findMany()
console.log(users)
}
main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})
スクリプトを再度実行します
npx tsx index.ts
[{ id: 1, email: 'alice@prisma.io', name: 'Alice' }]
コンソールで単一の User
オブジェクトが角括弧で囲まれていることに注目してください。これは、findMany
が内部に単一のオブジェクトを持つ配列を返したためです。
4.3. 関係クエリを探索する
Prisma ORM の主な機能の 1 つは、リレーションの操作が簡単なことです。このセクションでは、ネストされた書き込みクエリで User
レコードと Post
レコードを作成する方法を学びます。その後、include
オプションを使用してデータベースからリレーションを取得する方法を確認します。
まず、ネストされたクエリを含めるようにスクリプトを調整します。
import { PrismaClient } from '@prisma/client'
import { withAccelerate } from '@prisma/extension-accelerate'
const prisma = new PrismaClient().$extends(withAccelerate())
async function main() {
const user = await prisma.user.create({
data: {
name: 'Bob',
email: 'bob@prisma.io',
posts: {
create: [
{
title: 'Hello World',
published: true
},
{
title: 'My second post',
content: 'This is still a draft'
}
],
},
},
})
console.log(user)
}
main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})
スクリプトを再度実行してクエリを実行します。
npx tsx index.ts
{ id: 2, email: 'bob@prisma.io', name: 'Bob' }
User
に属する Post
レコードも取得するために、posts
リレーションフィールドを介して include
オプションを使用できます。
import { PrismaClient } from '@prisma/client'
import { withAccelerate } from '@prisma/extension-accelerate'
const prisma = new PrismaClient().$extends(withAccelerate())
async function main() {
const usersWithPosts = await prisma.user.findMany({
include: {
posts: true,
},
})
console.dir(usersWithPosts, { depth: null })
}
main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})
スクリプトを再度実行して、ネストされた読み取りクエリの結果を確認します。
npx tsx index.ts
[
{ id: 1, email: 'alice@prisma.io', name: 'Alice', posts: [] },
{
id: 2,
email: 'bob@prisma.io',
name: 'Bob',
posts: [
{
id: 1,
title: 'Hello World',
content: null,
published: true,
authorId: 2
},
{
id: 2,
title: 'My second post',
content: 'This is still a draft',
published: false,
authorId: 2
}
]
}
]
今回は、2 つの User
オブジェクトが出力されていることがわかります。どちらも posts
フィールド ("Alice"
の場合は空で、"Bob"
の場合は 2 つの Post
オブジェクトが入力されています) を持ち、それらに関連付けられた Post
レコードを表しています。
次のステップ
基本的な Prisma Postgres セットアップを試してみました。キャッシュ機能の追加など、より複雑なクエリを探索したい場合は、公式の クイックスタート を確認してください。
Prisma Studio でデータを表示および編集する
Prisma ORM には、データベース内のデータを表示および編集するための組み込み GUI が付属しています。次のコマンドを使用して開くことができます。
npx prisma studio
Prisma Postgres を使用すると、Prisma Studio を直接使用することもできます。プロジェクトの Studio タブを選択します。
Next.js でフルスタックアプリを構築する
フルスタックアプリで Prisma Postgres を使用する方法を学びます
すぐに実行できるサンプルを探索する
prisma-examples
GitHub リポジトリをチェックして、Prisma ORM をお気に入りのライブラリで使用する方法を確認してください。このリポジトリには、Express、NestJS、GraphQL の例と、Next.js や Vue.js を使用したフルスタックの例などが含まれています。
これらの例ではデフォルトで SQLite が使用されていますが、プロジェクトの README の手順に従って、いくつかの簡単な手順で Prisma Postgres に切り替えることができます。
Prisma とつながる
Prisma の旅を続けるには、以下とつながってください。 アクティブなコミュニティ。常に情報を入手し、参加し、他の開発者と協力してください。
- X でフォローしてください お知らせ、ライブイベント、役立つヒントをお届けします。
- Discord に参加してください 質問をしたり、コミュニティと話したり、会話を通じてアクティブなサポートを受けたりできます。
- YouTube でチャンネル登録してください チュートリアル、デモ、ストリームをご覧ください。
- GitHub で交流してください リポジトリにスターを付けたり、問題を報告したり、問題に貢献したりできます。