文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

为什么你要考虑使用Prisma

2024-12-01 20:03

关注

Prisma正迅速成为我的首选ORM框架,这是有原因的。在我们创建一个web项目时,设置链接数据库一直是一项比较繁琐的任务。虽然ORM已经存在了一段时间,并且在大多数情况下已经简化了这个过程。然而,它们似乎总是在某个方面有所欠缺。

对于一个开发人员来说,每一个ORM框架,通常都有一些开发人员希望它能做得更好一点。但对我来说,它这个设计模式绐我带来了快速查看和编辑数据的能力。Prisma为我解决这些问题的同时也解决了一些我不知道的问题。

什么是Prisma

Prisma称自己为下一代 Node.js、TypeScript、Go 的数据库 ORM框架

Prisma是一个开源的数据库工具链项目,帮助开发人员更快地构建应用程序并减少错误,支持PostgreSQL、MySQL、MongoDB、SQL Server和SQLite。

Prisma Schema

Prisma的核心是通过Primsa Schema文件来定义数据模型。它是用一种叫做PSL(Prisma Schema Language)的属性语言编写的,这需要几分钟时间来熟悉。Schema文件主要有三个主要组成部分。首先是你的数据源datasource,这个配置数据库的URL和数据库类型的地方。在这种情况下,provider用来表示使用的数据库的类型。如下所示:

datasource db {
url = env("DATABASE_URL")
provider = "postgresql"
}

下一个部分是生成器(Generator)字段。这个字段指定了应该根据数据模型生成什么客户端。这个功能就是让你如何使用Prisma生成的客户端来CRUD。这些我们稍后会介绍,这一部分看起来像这样:

generator client {
provider = "prisma-client-js"
}

最后,我们要定义我们的应用模型数据模型(Data model)在数据库中的字段 ,这将是这个文件的重点。在这里你创建你的应用模型和数据间的映射关系。这一部分也需要最长的时间来适应,然而,它看起来仍然会显得很熟悉。PSL不是创建普通的JS对象,而是以一种不同的方式来格式化模型,但所有的字段都与你习惯的交互方式相同。下面这个就是一个用户模型的例子:

model User {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
email String @unique
name String?
role Role @default(USER)
posts Post[]
}

这个用户模型我们有一个有六个字段,"id "是一个整数,并有一个默认值且自增。还有一些标准的,其它的、唯一的类型属性你可以在 官方文档) 中探索。你的下一个问题可能是 "模型间的关联关系是如何工作的?",幸好它们相当简单易懂。下面是一个用户发的帖子的模型。

model Post {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
published Boolean @default(false)
title String @db.VarChar(255)
author User? @relation(fields: [authorId], references: [id])
authorId Int?
}

这个关联关系定义在帖子的作者字段中。意思非常简单,author字段是一个用户,它引用了用户模型User。然后我们创建一个关联关系,用贴子模型Post上的字段 "authorId "引用用户模型User中的 "id "字段。最后一个要解决的大问题是使你的数据库与你的定义的模型保持同步,Prisma通过Prisma Migrate做到这一点。这是一个简单的命令行,可以将你的数据库与你可能有的任何变化一起迁移,具体可参考 官方文档的迁移功能。

CRUD

记住你的Prisma Schema文件中的生成器Generator部分,这里是你要使用的地方。你的Generator块是Prisma用来决定如何建立其客户端的东西。它的建立是为了对你的数据进行类型安全的查询。这意味着查询你查询数据的操作函数将变得更加容易理解和使用。

const newUser = await prisma.user.create({
data: {
name: 'Alice',
email: 'alice@prisma.io',
},
})
const users = await prisma.user.findMany()

这是一个创建和查找用户的例子。当为你的数据生成一个客户端时,Prisma将方法添加到Prisma对象中,与你的数据完全相关。继续以用户和帖子为例,我们也将能够做到这一点。

prisma.post.create()

如果要想进一步了解更多复杂的查询操作,请查看这里。

Prisma的好处

Introspection


这里至少有两个特点让我至少考虑它,对于任何项目,即使是那些我已经在使用不同的ORM的项目。Introspection是一项功能,它允许你使用你已经创建的数据库来生成一个与你的数据库相匹配的Prisma模式。因此,如果你有一个已经按你喜欢的方式设置的数据库,但想尝试Prisma,这个过程是无缝和简单的。你的Prisma Schema文件已经生成,你可以立即开始使用Prisma。所有这些都在一个单一的命令中完成。

prisma db pull

Prisma Studio

Prisma还创建了一个本地的web客户端,你可以随时的改变或更新数据。Prisma Studio对于快速检查数据或改变一些东西进行测试是非常好的。它可能不像PgAdmin或MySql Workbench那样先进,但它仍然为大多数数据库工作提供了足够的选择。我唯一不满意的是,你不能像使用Sanity那样定制外观界面。

来源:新钛云服内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯