翻译自:www.prisma.io/blog

大厂技术  高级前端  Node进阶

点击上方 程序员成长指北,关注公众号

回复1,加入高级Node交流群

目录

  • 一个对象关系映射的新范例

  • Prisma —— Node.js 和 TypeScript 的完整 ORM

  • Prisma 适合任何技术栈

  • 已经为关键型应用程序的投产做好准备

  • 我们对开发人员非常关心

  • 下一代 Web 框架基于 Prisma 构建

  • 开源及其他

Prisma是 Node.js 和 TypeScript 的下一代 ORM。经过两年多的开发,我们很高兴分享所有 Prisma 工具已准备好投入生产!

一个对象关系映射的新范例

Prisma 是适用于 Node.js 和 TypeScript 的下一代开源ORM。它包含以下工具:

  • Prisma Client——自动生成且类型安全的数据库客户端

  • Prisma Migrate——声明式数据建模和可自定义的迁移

  • Prisma Studio——现代化的用户界面,可查看和编辑数据

这些工具可以在任何 Node.js 或 TypeScript 项目中一起或单独采用。Prisma 当前支持 PostgreSQL,MySQL,SQLite,SQL Server(预览版)。MongoDB 的连接器正在开发中,请在此处注册 Early Access 程序。

数据库是很难的

使用数据库是应用程序开发中最具挑战性的领域之一。数据建模,模式迁移和编写数据库查询是应用程序开发人员每天处理的常见任务。

在 Prisma,我们发现 Node.js 生态系统虽然在构建数据库支持的应用程序中越来越流行,但并未为应用程序开发人员提供处理这些任务的现代工具。

应用程序开发人员应该关心数据,而不是 SQL

随着工具变得更加专业化,应用程序开发人员应该能够专注于为组织实现增值功能,而不必花费时间通过编写胶合代码来遍历应用程序的各个层。

Prisma —— Node.js 和 TypeScript 的完整 ORM

尽管 Prisma 解决了与传统 ORM 相似的问题,但是其对这些问题的处理方式却根本不同。

在 Prisma schema 中数据建模

使用 Prisma 时,您可以在 Prisma 模式中定义数据模型。以下是 Prisma 模型的样例:

model Post {id        Int     @id @default(autoincrement())title     Stringcontent   String?published Boolean @default(false)author    User?   @relation(fields: [authorId], references: [id])authorId  Int?
}model User {id    Int     @id @default(autoincrement())email String  @uniquename  String?posts Post[]
}

schema 中的每一个model都映射到基础数据库中的表,并作为 Prisma Client 提供的生成的数据访问 API 的基础。Prisma 的VS Code 扩展提供语法高亮显示,自动补全,快速修复和许多其他功能,使数据建模具有神奇而令人愉悦的体验。

使用 Prisma Migrate 进行数据库迁移

Prisma Migrate 将 Prisma 模式转换为所需的 SQL,以创建和更改数据库中的表。可以通过Prisma CLI提供的 prisma migration 命令使用它。

PostgreSQL:

CREATE TABLE "Post" ("id" SERIAL NOT NULL,"title" TEXT NOT NULL,"content" TEXT,"published" BOOLEAN NOT NULL DEFAULT false,"authorId" INTEGER,PRIMARY KEY ("id")
);CREATE TABLE "User" ("id" SERIAL NOT NULL,"email" TEXT NOT NULL,"name" TEXT,PRIMARY KEY ("id")
);CREATE UNIQUE INDEX "User.email_unique" ON "User"("email");ALTER TABLE "Post" ADD FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;

在基于 Prisma schema自动生成 SQL 的同时,您可以轻松地根据自己的特定需求对其进行自定义。通过这种方法,Prisma Migrate 在生产率和控制力之间取得了很好的平衡。

使用 Prisma Client 进行直观且类型安全的数据库访问

与 Prisma Client 一起使用的主要好处是,它使开发人员可以在对象中进行思考,因此提供了一种熟悉且自然的方式来推理其数据。

Prisma Client 没有模型实例的概念。相反,它有助于制定始终返回纯 JavaScript 对象的数据库查询。多亏了生成的类型,可以为查询获得了自动补全功能。

另外,作为对 TypeScript 开发者的一种奖励。Prisma Client 查询的所有结果都是完全类型化的。事实上,Prisma 提供了任何 TypeScript ORM 中最强大的类型安全保证(你可以在这里阅读与 TypeORM 的类型安全比较)。

列表查询

// Find all posts
const posts = await prisma.post.findMany()

关系查询

// Find all posts and include their authors in the result
const postsWithAuthors = await prisma.post.findMany({include: { author: true },
})

嵌套插入数据

// Create a new user with a new post
const userWithPosts: User = await prisma.user.create({data: {email: 'ada@prisma.io',name: 'Ada Lovelace',posts: {create: [{ title: 'Hello World' }],},},
})

过滤

// Find all users with `@prisma` emails
const users = await prisma.user.findMany({where: {email: { contains: '@prisma' },},
})
const postsByUser = await prisma.user.findUnique({ where: { email: 'ada@prisma.io' } }).posts()

分页

const posts = await prisma.post.findMany({take: 5,cursor: { id: 2 },
})

Prisma Studio 的现代管理界面

Prisma 还为你的数据库提供了一个现代化的管理界面–想想看 phpMyAdmin,但在 2021 年。

Nodejs ORM Prisma 介绍相关推荐

  1. Nodejs ORM框架Sequelize

    Nodejs ORM框架Sequelize (模型,关联表,事务,循环,及常见问题) 建立连接 const Sequelize = require('sequelize'); const sequel ...

  2. 【JavaScript进阶学习】NodeJs语言的介绍及基本使用

    NodeJs语言的介绍 NodeJs服务器语言,后端语言,采用了ECMAScript的语法,用来在服务器中开启服务,操作文件,处理路径,处理请求,发送数据等服务功能. NodeJs的解析器:V8引擎 ...

  3. orm mysql_ORM介绍

    [TOC] Django模型层之ORM介绍 一 ORM是什么?为何要有ORM? ​ 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(增.删.改.查),而一旦谈到数据 ...

  4. Orm框架介绍和常见的Android Orm框架

    ORM(Object Relational Mapping)框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中. 先介绍一下ORM的概念,以前也一直听说 ...

  5. C++ 对象关系映射(ORM)介绍

    用过Java的都知道SSH框架,特别对于数据库开发,Java领域有无数的ORM框架,供数据持久层调用,如Hibernate,iBatis(现在改名叫MyBatis),TopLink,JDO,JPA-- ...

  6. 对象关系映射(ORM)介绍理解

    问题背景 假设,让你设计一个框架,把jdbc封装一下?? JDBC操作步骤: 获取数据库连接Connection 创建操作命令对象Statement 执行sql语句(sql中,如果有占位符,在执行sq ...

  7. sugar orm使用介绍

    首先介绍一下sugar orm为什么诞生!!! 借用官网上面的几句话: a.Fairly large and complex data model. b.Primary work was to sav ...

  8. NodeJS常用模块介绍

    收集了NodeJS开发中常用的一些模块. MVC框架 - Express Express 是轻量灵活的Nodejs Web应用框架,它可以快速地搭建网站.Express框架建立在Nodejs内置的Ht ...

  9. ORM框架介绍——什么是ORM框架?

    1.什么是ORM? 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.ORM框架是连接数据库的桥梁,只要提 ...

  10. Nodejs Request使用介绍

    转自:http://www.open-open.com/lib/view/open1435301679966.html 这篇就先介绍一个Node.js的模块--request.有了这个模块,http请 ...

最新文章

  1. setTimeOut()
  2. 网络工程师常用英文简写
  3. (转)另一篇:VC导出数据到EXCEL
  4. 【温故知新】CSS学习笔记(显示模式简介)
  5. 2013\National _C_C++_C\1.好好学习
  6. Exchange server 2010系列教程之三 发送邮件测试
  7. python 读取word_教你怎么使用 Python 对 word文档 进行操作
  8. LVDS原理及设计指南
  9. redis用zset做延时消息
  10. 解题报告:poj2689 Prime Distance
  11. DHCP报文单播/广播分析
  12. 华为员工吐槽加班太多,晒出7天上班打卡记录网友:不怕猝死吗?
  13. 从阿里一面谈面试需要准备什么
  14. JAVA服务器获取手机设备的IP地址
  15. 什么是WHQL认证?
  16. 微信早安推送+定时任务配置(精简图文版)
  17. 【理财】3.富人思维
  18. 水星路由器wan口ip显示0_路由器wan口ip地址显示0.0.0.0怎么办
  19. 直播App竞争激烈,请你分析,在这个红海市场中,各家App彼此竞争的关键因素有哪些?其中最重要的是什么?
  20. 获取jqGrid中的所有数据导出并生成Excel文件流供用户下载(post请求实现文件下载)...

热门文章

  1. 代理服务器关闭没过多久又自动开启,Win10自动更新关闭了过几天又自动开启了怎么办?...
  2. 易企CMS采集助力网页快速收录
  3. Tornado @tornado.gen.coroutine 与 yield
  4. 与其说我害怕成为普通人,还不如说我害怕生活,害怕找不到一种自己喜欢的方式去度过人生...
  5. https工作原理及CA证书部署
  6. 特征工程(五): PCA 降维
  7. 给大家安利一个Python版本的记忆翻牌小游戏!上才艺!!
  8. 科学计算机开方符号是什么意思,计算器里开平方的符号请举来瞧瞧,好让自己购 – 手机爱问...
  9. Vue 路由 跳转【返回、刷新、跳转】
  10. ppt如何替换其他mo ban_“华南师范大学”专属PPT模板来了!华南师大同学们的PPT我们承包了!...