Docs 菜单
Docs 主页
/ / /
Node.js 驱动程序

教程:与Prisma集成

Prisma是适用于 Node.js 的开源对象关系映射器 (ORM)。它同时支持JavaScript和 TypeScript,但主要与 TypeScript 一起使用,帮助您写入可读且类型安全的代码。

模式通过定义集合文档的结构,帮助开发人员避免长期出现的数据不一致问题。虽然您可以在MongoDB中在数据库级别定义模式,但Prisma允许您在应用程序级别定义模式。由于Prisma Client 可识别模式,因此使用Prisma Client 的开发人员可以访问权限自动完成的查询。

通常,一起访问的数据应一起存储在MongoDB集合中。 Prisma支持使用嵌入式文档将数据保存在一起。如果您必须将相关数据存储在单独的MongoDB集合中,则必须在一个文档的 _id字段中包含另一个文档。 Prisma简化了此进程,并协助您组织这些相关数据,同时保持数据的引用完整性。

要学习;了解有关在MongoDB中进行高效数据建模的更多信息,请参阅MongoDB Server手册中的 减少 $lookup 操作。

本教程介绍如何执行以下操作:

  • 下载Prisma应用程序示例

  • 配置Prisma模式

  • 创建MongoDB 数据库并使用示例数据填充

  • 使示例应用程序与MongoDB兼容

  • 运行应用程序。

1

在开始本教程之前,请确保您已准备好以下组件:

  • 已配置集群的MongoDB Atlas帐户。要查看说明,请参阅Atlas入门指南。

  • Node.js v16.20.1或更高版本。

2

从Prisma示例存储库库克隆或下载示例应用程序。

此示例是一个使用 SQLite数据库的简单博客内容管理平台。以下步骤修改应用程序以使用MongoDB而不是 SQLite。

3

导航到示例应用程序目录中的 prisma/schema.prisma文件。在此文件的 datasource db对象中,设立provider字段设置为 "mongodb",并将 url字段设置为您的Atlas连接 URI。

在同一文件的 User 模型中,将 id字段类型从 Int 更改为 String,并将默认值设立为 auto()id属性必须映射到MongoDB _id字段。您还必须指示Prisma将此属性的数据类型设立为 ObjectId

Post 模型中,对 id字段执行与在 User 模型中相同的更改。您还必须将 authorId字段类型从 Int 更改为 String,并将数据类型设立为 ObjectId

您的 schema.prisma文件应类似于以下内容:

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mongodb"
url = "<your connection URI>"
}
model Post {
id String @id @default(auto()) @map("_id") @db.ObjectId
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
title String
content String?
published Boolean @default(false)
viewCount Int @default(0)
author User @relation(fields: [authorId], references: [id])
authorId String @db.ObjectId
}
model User {
id String @id @default(auto()) @map("_id") @db.ObjectId
email String @unique
name String?
posts Post[]
}

此模式在MongoDB 数据库中定义单独的 UserPost 集合,其中每个 Post 都包含对 User 的引用。

完成这些更改后,导航到终端中的项目目录并运行以下命令以安装必要的依赖项并生成模式:

npm install
npx prisma generate

注意

如果对模式进行任何进一步更改,则必须重新运行 npx prisma generate 命令才能使更改生效。

4

要使用示例数据填充数据库,运行通过运行以下命令来运行示例项目中的 prisma/seed.ts文件:

npx prisma db seed

这将创建 schema.prisma文件定义的 UserPost 集合,并用示例数据填充它们。

5

导航至示例项目的 src目录。在 pages/api/post/[id].tspages/api/publish/[id].ts 文件中,将 Number(postId) 的所有实例替换为 postId。这是必要的,因为模式中的 id 字段现在的类型是 String 而不是 Int

6

要启动应用程序,请从项目目录运行以下命令:

npm run dev

在网络浏览器中导航至 http://localhost:3000 以查看并运行应用程序。您可以使用该应用程序创建、起草、发布和删除博客文。您可以引用示例项目的 pages/api 文件夹中的API路由定义。

要学习;了解有关Prisma 的更多信息,请参阅Prisma文档。

要查看和下载本教程中应用程序的完整版本,请参阅 prisma-mongodb-nextjs-example GitHub存储库。

后退

开始使用Mongoose

在此页面上