跳到主內容

在 JavaScript 專案中對 MongoDB 進行內省

Prisma ORM 透過對給定資料庫中儲存的資料進行取樣並推斷其模式來內省 MongoDB 模式。

為了演示內省,本指南將幫助您從頭開始設定 MongoDB。但是,如果您已經有 MongoDB 資料庫,請隨時跳轉到您的專案中的初始化 Prisma ORM

設定您的資料庫

要實際操作,首先建立一個包含兩個集合 `User` 和 `Post` 的 `blog` 資料庫。我們推薦 MongoDB Compass 來設定此項。

Create a blog database using Compass

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

Create a user within the User collection

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

Create some posts within the Post collection

初始化 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` 檔案

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。

© . This site is unofficial and not affiliated with Prisma Data, Inc.