Prisma + MongoDB = 💚
自 Prisma ORM 初次发布以来,对 MongoDB 的支持一直是最受请求的功能之一。将这两种技术结合使用可以提高开发人员的生产力,并使他们能够更快地交付更具野心的软件。

Prisma schema 杜绝数据不一致
Node.js 开发人员喜欢 MongoDB 的灵活性以及熟悉的基于 JSON 的数据模型!然而,作为一个无模式数据库,这意味着 MongoDB 用户在项目开始演进和规模增长时,很容易遇到数据不一致问题。
使用 Prisma,开发人员可以轻松地为他们希望存储在 MongoDB 中的数据定义一个模式。这有几个好处:
- MongoDB 内部的数据结构变得明确。
- Prisma 确保存储在 MongoDB 中的数据的一致性。
- 所有团队成员都知道存储在 MongoDB 中的数据。
Prisma schema 使用 Prisma 直观且易于阅读的建模语言编写,以下是一个示例:
Prisma 的数据模型使处理关系变得特别容易。在上面的 schema 示例中,您会看到通过引用从 User 到 Post 的一对多关系,以及表示 User 模型上嵌入文档的 Profile 类型。
自动补全数据库查询
与 MongoDB 类似,Prisma 也提供了一个数据库客户端,您可以使用它来查询您的 MongoDB 数据库:Prisma Client。两者之间的一个主要区别是 Prisma Client 了解您定义的 schema,因此它可以帮助您通过自动补全编写查询。

当您需要对 MongoDB 实例运行更专业的查询时,Prisma 还允许您回退到 MongoDB 的原生查询 API。
基于引用的关系上的级联删除/更新
MongoDB 不原生支持引用操作(即级联删除/更新)。Prisma “填充”了此功能,允许开发人员在 Prisma schema 中配置这些操作,从而有助于您 MongoDB 数据库中数据的引用完整性。
在上述数据模型中,author 字段上的 @relation 属性使用 onDelete: Cascade。这意味着当 User 文档被删除时,所有与之相关的 Post 文档也会被删除。
Prisma 让 MongoDB 类型安全
Prisma 在 TypeScript 应用程序中使用时尤其出色,因为它提供了极强的类型安全保证。
例如,考虑这个查询,我们通过 select 选项指定 User 模型(及其关系)的哪些字段应在响应中返回:
如果您在上面的代码片段中选择生成的类型选项卡,您会看到结果 userData 常量的类型现在已经根据查询中选择的字段进行了定制。
这有两个主要好处:
- TypeScript 编译器将捕获您意外访问未从查询返回的字段的情况。

- 您的自动补全建议是根据给定类型定制的。

立即试用 Prisma 与 MongoDB
我们很高兴看到您将用 MongoDB 和 Prisma 构建什么!您可以在我们的文档中开始使用 MongoDB(参见下面的按钮)。
从头开始...
要开始使用 MongoDB 和 Prisma,您可以按照我们的指南从头设置一个新项目。
从头开始使用 MongoDB
...或将 Prisma 与您现有的 MongoDB 数据库一起使用
如果您已经有一个使用 MongoDB 数据库的现有项目,您可以轻松地开始逐步采用 Prisma。
Prisma 具有自省功能,可以读取您存储在 MongoDB 集合中的文档结构,并创建相应的 Prisma 模型。我们还将很快发布 Mongoose 的迁移指南。
将 Prisma 添加到现有 MongoDB 项目
加入我们一周的庆祝活动 🎉
为了庆祝 Prisma 对 MongoDB 的支持,我们计划在四月底举办一个发布周,期间将有许多有趣的活动、新内容和精彩的事件!
- 日期:4 月 25 日至 29 日
- 地点:线上
- 网站:https://prisma.org.cn/mongodb-launch
通过上述网站注册,加入我们的发布周!如果您正在使用 MongoDB 和 Prisma 构建东西,并希望在发布周期间谈论它,您也可以提交我们的展示闪电演讲 (~3 分钟) 的提案!

不要错过下一篇文章!
订阅 Prisma 新闻通讯