ORM & Prisma


クライアントはexpressサーバにリクエストを送信します.データをインポートするには、expressサーバをmysqlサーバに接続する必要があります.ORMを使用します.

ORM (Object Relational Mapping)


データもオブジェクトとして管理すればどんなにいいですか?これは一つの考えです.
class Pet {
	constructor(name, owner, age){
    	this.name = name;
        this.owner = owner;
        this.age = age;
    }
}
名前のクラスを作成してデータを作成したらどうですか.
mysqlに直接接続する必要はありません.JavaScript構文を使用してモデリングできます.

移行(移行/移行)


コードで作成したクラスを実際のデータベースに移動するプロセス.
자바스크립트로 만든 모델 => migrations  => 데이터베이스
ORMは、クエリ文以外の言語で記述されたコードをクエリ文に翻訳してコマンドを解放します.

行を整理する


ORMでは、サーバとデータベースを接続し、クエリー文ではなくデータベースを操作するときに他の言語を使用できます.このプロシージャを移行と呼びます.

Prisma


Nodejsおよびexpress環境での使用に適したORMはPrismaである.Prismaの基本的な使い方を学びましょう.
Presmaのインストール
npm install prisma --save-dev
npm install @prisma/client --save-dev
Presma接続
npx prisma init //초기 세팅
Prismaフォルダとインストールenvは正常です.
prismaフォルダにschemaがあります.Prismaがあることを確認

1データベースへの接続


⎿ schema.prisma


providerをmysqlに変更します.
datasource db {
	provider = "mysql"
  	url      = env("DATABASE_URL")
}

⎿.env


環境変数を使用可能にします.
独自のデータベースurlを作成します.
DATABASE_URL = "mysql://유저이름:비밀번호@localhoset::3306/Database이름"

2▼▼▼モデリング


構文については、Data modelを参照してください.

⎿ schema.prisma


tableを追加する方法.
model User {
  id    Int    @id @default(autoincrement())
  title String
  @@map("users")
}
Userを使用してクラスを表し、Pasta記号を使用してJsの構文を表します.ただし、データベース内のテーブル名は、@@mapを使用して小文字+マルチフォームの会議を保護します.

migrations

npx prisma migrate dev --name 파일이름
接続したデータベースに正常にアクセスし、prismaフォルダの下に날짜_파일이름を含むフォルダがあることを確認してください.いどうsqlでは、クエリー文の変化が表示されます.
-- CreateTable
CREATE TABLE `users` (
    `id` INTEGER NOT NULL AUTO_INCREMENT,
    `title` VARCHAR(191) NOT NULL,
    PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
その他の内容

Relations


1対1の関係


クエリ文
CREATE TABLE "User" (
    id SERIAL PRIMARY KEY
);
CREATE TABLE "Profile" (
    id SERIAL PRIMARY KEY,
    "userId" INTEGER NOT NULL UNIQUE,
    FOREIGN KEY ("userId") REFERENCES "User"(id)
);
prisma
model User {
  id      Int      @id @default(autoincrement())
  profile Profile?
}
model Profile {
  id     Int  @id @default(autoincrement())
  user   User @relation(fields: [userId], references: [id])
  userId Int // relation scalar field (used in the `@relation` attribute above)
}
  • フィールドを示すユーザーを追加し、@relationに記入します.
  • pkを含むフィールドに、Fkを含むプロファイルを入力します.
  • 一対多の関係でも同じようにすればいい!

    2」関係

    table1 ==  table1_table2 === table2
    中間テーブルにfkを作成すればいいです.