内省
Prisma ORM 通过对给定数据库中存储的数据进行采样并推断该数据的模式来内省 MongoDB 模式。
为了说明内省,本指南将帮助您从头开始设置 MongoDB。但如果您已经拥有 MongoDB 数据库,请随意跳至 在您的项目中初始化 Prisma ORM。
设置您的数据库
为了实际演示,首先创建一个名为 blog
的数据库,其中包含两个集合:User
和 Post
。我们建议您使用 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
初始化 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 了。