新钛云服已累计为您分享657篇技术干货

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做到这一点。这是一个简单的命令行,可以将你的数据库与你可能有的任何变化一起迁移,具体可参考 官方文档的迁移功能。<a name="v8LM3"></a>

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()

如果要想进一步了解更多复杂的查询操作,请查看这里。<a name="DrufO"></a>

Prisma的好处

Introspection

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

prisma db pull
Prisma Studio

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

Sources

https://www.prisma.io/

原文:https://medium.com/@iben.oneal/why-you-should-consider-prisma-io-a5d963f68c4e

了解新钛云服

· 新钛云服成为国内首家荣获 Gartner Customer First 徽章的云和安全管理服务商!

· 新钛云服荣膺“2022爱分析 · IT运维厂商全景报告”云管理平台CMP 代表厂商!

· 新钛云服荣膺第四届FMCG零售消费品行业CIO年会「年度数字化服务最值得信赖品牌奖」

· 新钛云服A轮融资数千万元!获资本和客户双重青睐!

· 新钛云服三周岁,公司月营收超600万元,定下百年新钛的发展目标

· 当IPFS遇见云服务|新钛云服与冰河分布式实验室达成战略协议

· 深耕专业,矗立鳌头,新钛云服获千万Pre-A轮融资

· 新钛云服一周年,完成两轮融资,服务五十多家客户

往期技术干货

· 万字长文:云架构设计原则|附PDF下载

· 万字长文 | 使用 RBAC 限制对 Kubernetes 资源的访问

· 万字长文 | 面向k8s编程,如何写一个Operator

· Terraform 实战 | 万字长文

· 万字长文 | 在 Kubernetes 中部署高可用应用程序的最佳实践!

· CephFS性能基准测试与集群优化 | 万字总结

· 低代码开发,全民开发,淘汰职业程序员!

· 国内主流公有云VPC使用对比及总结

· Ceph OSD故障排除|万字经验总结

· 运维人的终身成长,从清单管理开始|万字长文!

· OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等

· IT混合云战略:是什么、为什么,如何构建?

为什么你要考虑使用Prisma相关推荐

  1. 本季度干货导航 | 2022年Q2

    新钛云服已累计为您分享658篇技术干货 新钛云服每季度的<干货导航>栏目来了,4-6月,新钛云服共为您带来52篇技术干货,滚动屏幕,看看我们为大家分享了哪些云运维.云管理和代码开发相关的知 ...

  2. 寻找下一款Prisma APP:深度学习在图像处理中的应用探讨

    在9月23日到9月24日的MDCC 2016年中国移动者开发大会"人工智能与机器人"专场中,阿里云技术专家周昌进行了题为<寻找下一款Prisma APP:深度学习在图像处理中 ...

  3. prisma graphql 工具基本使用

    项目使用docker-compose mysql 运行 安装 npm insatll -g prisma or yarn global add prisma 创建代码 项目结构 ├── README. ...

  4. 软件测试周刊(第36期):为什么你要当程序员?

    编辑:国薇.一口锅.菜菜.静怡.小淑子.夏至 欢迎来到第 35 期!这里记录过去一周我们看到的软件测试及周边的行业动态,周五发布. 本期看点:字节通过 Android 调用链实现自动化精准测试的设计思 ...

  5. 精读《Prisma 的使用》

    ORM(Object relational mappers) 的含义是,将数据模型与 Object 建立强力的映射关系,这样我们对数据的增删改查可以转换为操作 Object(对象). Prisma 是 ...

  6. 自己写一个PRISMA 让两张图片融合起来

    原文:http://blog.askfermi.me/2016/09/27/diy-prisma/ 大约2个月前的一天,一款叫做PRISMA的应用突然刷爆了朋友圈,后来还出现了叫做Ostagram之类 ...

  7. 用深度学习做个艺术画家 ——模仿实现PRISMA

    编者按:本书节选自图书<机器学习之路--Caffe.Keras.scikit-learn实战>,高深的数学理论,复杂的算法又让很多机器学习入门者忘而却步,不知从何下手,本书绕过理论障碍,打 ...

  8. 布拉格捷克理工大学研究团队:Prisma进化版

    原文链接  还记得 Prisma 吗?就是能把拍摄的照片转化为各种名画风格的修图软件,神经网络的深度学习后,想要波普还是梵高风的图片都不在话下. 现在,它的进化版本来了.这回是布拉格捷克理工大学的研究 ...

  9. 自己写个 Prisma

    Sirajology的视频链接 前一段时间特别火的 Prisma 大家都玩了么,看了这篇文章后,你也可以自己写一个 Prisma 迷你版了. 这个 idea 最开始起源于 Google Researc ...

  10. Umi v4 Ant Desgin Pro v6 prisma zod casbin 企业级后台系统玩透视频教程(14 个视频)

    Umi v4 & Ant Desgin Pro v6 & prisma & zod & casbin 企业级后台系统玩透视频教程(14 个视频) 研究透 antd pr ...

最新文章

  1. pandas 调整显示的行数列数
  2. activiti7 和业务_上市公司区块链业务终于赚钱了!营收增长3886.03%
  3. BZOJ1578: [Usaco2009 Feb]Stock Market 股票市场
  4. Java PriorityQueue clear()方法与示例
  5. Android 要收费、闭源恐难于上青天
  6. 分享DXperience免费汉化下载
  7. MySQL书籍和资料
  8. Android 学习笔记(十五) Activity-GalleryView
  9. 实验第七节——用户chaincode相关操作
  10. JavaScript纯前端上传和下载文件
  11. AI美杜莎来袭 · 光点2021
  12. HTML 盒子模型( box-sizing: border-box)
  13. VMware虚拟机安装黑苹果步骤与常见问题,VMware16,MacOS12.01(Moterey)
  14. Pytorch环境搭建
  15. 两代荣耀Magic历史性同框,荣耀Magic 2如何践行科技理想主义?
  16. Cocos2d-html5《王者之剑》实现 (1)
  17. python实现小程序_python实现小程序
  18. 牛客网-腾讯编程校招真题 编码 Java
  19. 网络安全风险与防范方法
  20. 固态硬盘性能测试成绩

热门文章

  1. win10专业版有必要吗_Win10专业版和家庭版系统有什么不同?
  2. go-ipfs命令详解之files
  3. 720度全景 html5代码,720web全景demo
  4. 如何在VR全景作品中添加独立热点?
  5. QoS实现交换机带宽控制
  6. 计算机管理组合用户,Windows2000用户和计算机帐户管理
  7. 2021年安全员-A证(江西省)报名考试及安全员-A证(江西省)考试平台
  8. c语言输出成绩与排名,C语言算成绩 要求输完两个分数后 同时输出两个分数换算出来的成绩...
  9. Mysql 省市区字典(带层级,带经纬度,带拼音)字典版
  10. 【模式匹配】之 —— Z-BOX算法