Prisma + MongoDB = 💚
自 Prisma ORM 初次发布以来,对 MongoDB 的支持一直是最受用户期待的功能之一。将这两项技术结合使用,可以提高开发人员的生产力,并使他们能够更快地交付更具野心的软件。
告别数据不一致,归功于 Prisma schema
Node.js 开发者喜欢 MongoDB 提供的灵活性和熟悉的基于 JSON 的数据模型!然而,作为一种无 schema 数据库,随着项目的演进和规模增长,MongoDB 用户很容易遇到数据不一致的问题。
使用 Prisma,开发者可以轻松定义他们想要存储在 MongoDB 中的数据的 schema。这有几个好处:
- MongoDB 中的数据结构变得明确。
- Prisma 确保了存储在 MongoDB 中数据的一致性。
- 所有团队成员都清楚存储在 MongoDB 中的数据。
Prisma schemas 使用 Prisma 直观且人类可读的建模语言编写,这是一个示例:
Prisma 的数据模型使得处理关系特别容易。在上面的 schema 示例中,您可以看到 User
与 Post
之间的 One-to-many 关系(通过引用),以及代表 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 编译器将捕获您意外访问未从查询返回的字段的情况。
- 您的自动补全建议会根据给定类型进行定制。
立即尝试将 MongoDB 与 Prisma 结合使用
我们很高兴看到您将用 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 构建项目,并想在发布周期间分享,您也可以提交 Showcase Lightning Talks(约3分钟)的演讲提案!
不要错过下一篇文章!
订阅 Prisma Newsletter