Overview
Prisma是适用于 Node.js 的开源对象关系映射器 (ORM)。它同时支持JavaScript和 TypeScript,但主要与 TypeScript 一起使用,帮助您写入可读且类型安全的代码。
Schemas
模式通过定义集合文档的结构,帮助开发人员避免长期出现的数据不一致问题。虽然您可以在MongoDB中在数据库级别定义模式,但Prisma允许您在应用程序级别定义模式。由于Prisma Client 可识别模式,因此使用Prisma Client 的开发人员可以访问权限自动完成的查询。
数据建模
通常,一起访问的数据应一起存储在MongoDB集合中。 Prisma支持使用嵌入式文档将数据保存在一起。如果您必须将相关数据存储在单独的MongoDB集合中,则必须在一个文档的 _id
字段中包含另一个文档。 Prisma简化了此进程,并协助您组织这些相关数据,同时保持数据的引用完整性。
要学习;了解有关在MongoDB中进行高效数据建模的更多信息,请参阅MongoDB Server手册中的 减少 $lookup 操作。
Tutorial
本教程介绍如何执行以下操作:
下载Prisma应用程序示例
配置Prisma模式
创建MongoDB 数据库并使用示例数据填充
使示例应用程序与MongoDB兼容
运行应用程序。
验证先决条件
在开始本教程之前,请确保您已准备好以下组件:
Node.js v16.20.1或更高版本。
配置Prisma模式
导航到示例应用程序目录中的 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 (auto()) ("_id") .ObjectId createdAt DateTime (now()) updatedAt DateTime title String content String? published Boolean (false) viewCount Int (0) author User (fields: [authorId], references: [id]) authorId String .ObjectId } model User { id String (auto()) ("_id") .ObjectId email String name String? posts Post[] }
此模式在MongoDB 数据库中定义单独的 User
和 Post
集合,其中每个 Post
都包含对 User
的引用。
完成这些更改后,导航到终端中的项目目录并运行以下命令以安装必要的依赖项并生成模式:
npm install npx prisma generate
注意
如果对模式进行任何进一步更改,则必须重新运行 npx prisma generate
命令才能使更改生效。
其他资源
要学习;了解有关Prisma 的更多信息,请参阅Prisma文档。
要查看和下载本教程中应用程序的完整版本,请参阅 prisma-mongodb-nextjs-example GitHub存储库。