6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

未来の自分のために簡単にprismaについて調べておこう、、

Posted at

Prismaとは

PrismaはNode.jsを対象としたオープンソースORMのこと。
型安全なデータベースアクセスが特徴で、TypeScriptとの相性が良い。
RailsでいうActiveRecord。

Prismaを構成する5要素

Prisma Model

アプリケーションで使用するモデルを表現するもの。
モデル内でテーブルやカラムの定義を行うことが可能。
Prisma Clientでクエリーを発行するために必要となる。

Prisma schema

Prismaの設定ファイル。
データベースクライアントやマイグレーションファイルの生成を行う。

Prisma Client

Node.js および TypeScript用の自動生成された型安全なクエリビルダーのこと。
Prisma Modelでの型情報を使用して、クエリーの結果は型安全となる。

Prisma Migrate

宣言型データモデリングおよび移行システムで、Prisma Schemaの情報をベースにマイグレーション周りの処理が可能になる。

Prisma Studio

データベース上のデータを閲覧・編集することができるGUIのこと。

利用までの手順

  1. 以下のコマンドでPrismaのインストールを行う。

    // yarnの場合
    yarn add -D prisma
    
    // npmの場合
    npm install prisma
    
  2. Prismaを初期化する

    • 「prismaフォルダ」と「.envファイル」が作成される。
    npx prisma init
    
  3. schema.prismaの設定

    // prisma generateコマンドの対象
    generator client {
      provider = prisma-client-js
    }
    
    // 使用データベースの情報
    datasource db {
      provider = mysql
      url      = env(DATABASE_URL)
    }
    
    // モデル(テーブル)情報
    model User {
      id Int @id @default(autoincrement())
      name String
      email String
      created_at DateTime @default(now())
      updated_at DateTime @default(now())
    }
    
  4. envファイルのデータベース情報を書き換える。

    .env
    // DATABASE_URL="使用DB://ユーザー名:パスワード@URL/DB名?schema=public"
    DATABASE_URL="mysql://postgresql:password@localhost:5432/test_db?schema=public"
    
  5. 以下のコマンドを実行してマイグレーションを行う。

    npx prisma migrate dev --name init
    
  6. prisma studioでテーブルが作成されているか確認する。

    npx prisma studio
    

よく使うprismaメソッド

レコード作成

// prisma.テーブル名.createでレコードを作成可能
await prisma.users.create({
    data: {
        name: name,
        email: email,
    },
});

レコード全件取得

// テーブルのレコードを全件取得
await prisma.users.findMany();

// 特定の条件に該当するレコードを全件取得
await prisma.user.findMany({
  where: {
    email: email,
  },
})

レコード個別取得

// ユニークなレコードを取得
await prisma.users.findUnique({
    where: {
        id: Number(req.params.id),
    },
});

// 最初に一致したレコードを取得
await prisma.users.findFirst({
    where: {
        name: name,
    },
});

レコード更新

await prisma.users.update({
    where: {
        id: Number(req.params.id),
    },
    data: {
        name: updatedName,
        email: updatedEmail,
    },
});

レコード削除

await prisma.users.delete({
    where: {
        id: Number(req.params.id),
    },
});

よく使うprismaコマンド

ローカルでschemaをDBへ反映させる

npx prisma migrate dev

seed実行

npx prisma db seed

GUI上でデータ確認

npx prisma studio

schemaでのerrorを確認

npx prisma validate

参考

Prisma Document

Prismaの導入とメリットを考える

【入門】Prismaを初めて使うときに知りたいことまとめ

次世代の Node.js ORM 、Prisma をサクッと入門する

Prisma 基礎

prisma チートシート(CLI)

Prismaコマンドまとめ

PrismaでSQLの作成や管理、反映の手間を削減する

Prisma頻出コマンドとマイグレーションの運用

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?