Prisma + TypesScriptプロジェクトの起動


そこには、お客様のJavaScriptベースのプロジェクトに使用するいずれかを選択するのは、このような豊富な選択を選択すると厳しいことができます.あなたの目標に応じて、またはあなたがトンを利用可能なスタック:ライブラリのようなTypeORM , Sequelize , and Mongoose , そして、より多く.
この記事では、このシリーズの残りの部分を通して我々は別のオプションに深いダイビングを取るでしょうつはクールな機能、ユニークな“ORM”の経験のトンを提供し、開発者の積極的な、専用のチームをサポートし、それに取り組んでいます.そのオプションはPrisma .

Prismaとは
最も基本的なレベルでは、Prismaはあなたのデータベースにアクセスし、対話を有効にするツールのセットを提供します.伝統的なORMと同じ機能の多くを提供している間、PrismaはORMの「データマッパー」モデルとタイプセーフインタラクションのその慎重な考慮として知られているもののそのユニークな実装のために次のGen ORMとしてそれ自体を説明します.
偉大なORMツール(Prismaクライアント)を提供するとともに、Prismaもデータベース移行ツールを提供しますPrisma Migrate そして、あなたの接続されたデータベース内のデータを視覚化し、更新することができます素敵なGUIPrisma Studio . この記事での我々の焦点とシリーズの残りはPrisma Client そして、その豊かな機能セット.
Prismaがこのシリーズでどのように機能するかについてより多くを学ぶように、我々はPrismaをとても強力で、他のツールから利用できるようにする多くの特徴で遊びます.

If you'd like to learn more about the different types of ORMs and where Prisma fits in and differs from those, please give this page a read.



ジャンピング
私はすべての利点、下向き、使用するケース、およびdon ' t - t - case(それは正しいフレーズですか?)を経ることを始めるのが大好きですPrismaの、私はあなたが良いものを得ることを切望していると確信しています.Prismaの超簡単なセットアップに右に飛び込んでください、そして、我々は何がPrismaであるかについて若干の前後関係を得ることができて、whatsを見て、そして、なぜ後に続きます.

This tutorial will assume a basic knowledge of JavaScript and its development ecosystem, TypeScript, and Database Terminology. If you want to brush up on these, check out these pages on npm, TypeScript, and SQLite


ここでの例ではPrismaをSQLiteデータベースに接続しますが、PrismaはPostgres、MySQL、MSSQL、およびMongoDBもサポートしています.
物事を開始するには、プロジェクトのフォルダを作成して初期化しましょうnpm その中で、様々なパッケージをインストールするために使用します.すべてのために糸恋人🐈, 代わりに自由に使ってください.
mkdir <my-project>
cd <my-project>
npm init -y
次に、私たちの開発依存性をインストールします
npm i -d prisma typescript ts-node @types/node
すべてのパッケージをインストールすると、我々は今、追加することによってtypescriptを設定することができますtsconfig.json ファイル、単純なtypescriptファイル、およびスクリプトpackage.json 開発サーバを起動するために実行できます.
// tsconfig.json
// This is just a basic setup, feel free to tweak as needed
{
  "compilerOptions": {
    "sourceMap": true,
    "outDir": "dist",
    "strict": true,
    "lib": ["esnext"],
    "esModuleInterop": true
  }
}
// main.ts
console.log("I'm Running!")
インpackage.json , 以下を加える"scripts" セクション
"dev": "ts-node main",
さて、プロジェクトのルートの端末で
npm run dev
...出力は次のようになります.

私たちのプロジェクトは、typescriptと準備ができてファンシーを取得する準備が整いました!現在、我々はPrismaをセットアップするために動きます.

Prismaの設定

初期化
Prismaを得るためのステップはかなり簡単です.私たちには依存関係が既にインストールされているので、起動するにはinit コマンドと私たちは私たちのデータソースとしてSQLiteを使用するつもりです教えてください.オプションの完全なリストについてはinit コマンド、チェックアウトdocs .
prisma init --datasource-provider sqlite
あなたのプロジェクトの新しいフォルダに気づくでしょうprisma だけでなく.env ファイルのプロジェクトのルート.そのフォルダの内容はファイル名でなければなりませんschema.prisma , どのファイルがどのように定義されますかPrisma Client 生成し、モデルデータを生成します.
次に、SQLite DBファイルを出力するPrismaを伝える必要があります.に.env ファイルを確認しましょうDATASOURCE_URL env variableは意味をなすファイルの場所を指定します(prisma フォルダ):
DATABASE_URL="file:dev.db"
Prismaは我々がアクセスできるようにする.env 変数env() 関数は.schema ファイル.あなたが開くことによってその使用法を見ることができますprisma.schema とチェックアウトurl 属性datasource ブロック.

データモデルの定義
様々な種類のブロックがあります.schema 異なることをして、異なるオプションのトンを持っているファイル.簡単に設定しますUser このチュートリアルの目的のためのモデル.
model User {
  id        Int    @id @default(autoincrement())
  firstName String
  lastName  String
  email     String
}

In a future article we'll dive deeper into the contents of this file and how to model out your data


これはPRISMA用のユーザテーブルを定義していますので、データとやりとりできるようなniceタイプのクライアントを生成する方法を知っています.現在データベースは空ですが、実際にそのテーブルを作成するためにスキーマをデータベースにプッシュする必要があります.(このコマンドはPrisma Client スキーマを押した後
prisma db push

を実行した後、我々のテーブルを使用して作成されたことを確認することができますPrisma Studio . このコマンドを実行してスタジオを開く
prisma studio
これで窓を開けなければならないhttp://localhost:5555 そして、このように見える.

あなたがクリックするならばUser モデルを使用すると、データベーステーブルのnice表ビューを参照して、テーブルに行を追加するオプションを指定できます.かなり甘い!このツールは間違いなくあなたのデータとの作業で来る.
我々のデータをモデル化した今、モデルで利用可能なモデルは、我々のデータソースを設定し、クライアントが生成、それを使用するようにしましょう!

Prismaクライアント
The Prisma Client がデフォルトで生成されますnode_modules フォルダ下@prisma/client . を開始するにはmain.ts . Prismaクライアントのインポートとインスタンス化.
import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {}

main()
    .catch( e => { throw e })
    .finally( async () => await prisma.$disconnect() )
それで、これは何をしますか?これはPrismaClient PRISMAによって生成されたクラスは、あなたがそれを与えたモデル定義のオフに基づきました.たった今main() 関数は何もしません.これは我々のデータと対話するコードを追加するところです.
終わりの作品は重要です.Prismaが開き、自動的に接続を処理しますが、アプリケーションのクローズまたは再読み込み時に切断する必要があることを伝える必要があります.そうでない場合、接続は、アプリケーションが起動し、手動で切断するまで生きて滞在するたびに生成されます.
アプリケーションを実行しようとするとエラーが発生した場合、db push . 先へ進んで、次のコマンドを実行して、Prismaクライアントを生成して、もう一度試してください.
prisma generate

データベースのクエリ
我々は今、いくつかのデータを再生を開始することができます!あなたのmain() 関数は、users 我々のデータベースで.
async function main() {
    const users = await prisma.user.findMany();
    console.log(JSON.stringify(users));
}
あなたはそれを入力するように、素晴らしいintellisenseをチェック!Prismaは、クライアントのための私たちの生活を容易にするためのタイプと定義のセットを生成しました.

かなり素晴らしい!これを実行した後に気づくかもしれませんが、結果は空です.それはまだデータがないからです!我々はそれを修正することができますPrisma Studio ユーザーテーブルにレコードを追加します.

コードを再度実行すると、コンソールに出力されたユーザーが表示されます.


ラッピング
これはちょうど始まりです、Prismaはとても多くのための特徴と可能性のそのような豊かなセットを持ちます.今後のシリーズでは、すべてのプリママを提供しているデザインパターン、カスタム拡張機能、および詳細を深く見ている!それで、あなたがこれを楽しむならば、Prismaはあなたの関心をおおいています.
私たちは、ほとんどの努力でこの記事のデータベースに接続するために、typescript、SQLiteデータベース、およびデータベース全体のクライアントを持つPRISMAを設定できました.それは私にはかなり素晴らしいです.あなたが深く掘って、我々が話したもので拡大したいならば、チェックしてください Prisma Client ドキュメント.
読書のおかげで、ハッピーコーディング!