內省
Prisma ORM 透過抽樣給定資料庫中儲存的資料並推斷其模式,對 MongoDB 模式進行內省。
為了說明內省的目的,本指南將幫助你從頭開始設定 MongoDB。但是,如果你已經有一個 MongoDB 資料庫,請隨意跳轉到專案中的初始化 Prisma ORM。
設定你的資料庫
要檢視實際操作,首先建立一個包含 2 個集合(`User` 和 `Post`)的 `blog` 資料庫。我們推薦使用MongoDB Compass 來進行設定。

首先,向我們的 `User` 集合新增一個使用者

接下來,向我們的 `Post` 集合新增一些帖子。重要的是 `userId` 中的 ObjectID 要與你上面建立的使用者匹配。

初始化 Prisma ORM
現在你已經有了一個 MongoDB 資料庫,下一步是建立一個新專案並初始化 Prisma ORM
mkdir blog
cd blog
npm init -y
npm install -D prisma
npx prisma init --datasource-provider mongodb --output ../generated/prisma
初始化 Prisma ORM 將建立一個 `prisma/schema.prisma` 檔案。編輯此檔案以使用 MongoDB
prisma/schema.prisma
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
接下來,你需要調整 `.env` 檔案,將 `DATABASE_URL` 指向你的 MongoDB 資料庫
使用 Prisma ORM 內省 MongoDB
你現在可以進行內省了。執行以下命令來內省你的資料庫
npx prisma db pull
此命令會內省我們的資料庫,並將推斷出的模式寫入你的 `prisma/schema.prisma` 檔案
prisma/schema.prisma
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model Post {
id String @id @default(auto()) @map("_id") @db.ObjectId
title String
userId String @db.ObjectId
}
model User {
id String @id @default(auto()) @map("_id") @db.ObjectId
email String
}
調整模式
為了能夠使用 Prisma Client 連線資料,你可以將 @relation 屬性新增到我們的模型中
prisma/schema.prisma
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model Post {
id String @id @default(auto()) @map("_id") @db.ObjectId
title String
userId String @db.ObjectId
user User @relation(fields: [userId], references: [id])
}
model User {
id String @id @default(auto()) @map("_id") @db.ObjectId
email String
posts Post[]
}
提示
我們正在積極開發 MongoDB 內省功能。請在此議題中提供對此功能的反饋。
至此,你已準備好生成 Prisma Client。