使用 Prisma 从 MySQL、PostgreSQL 和 SQL Server 数据库查询数据 - 一个面向 Node.js 的类型安全的 TypeScript ORM。
// Creating a new recordawait prisma.user.create({ firstName: “Alice”, email: “alice@prisma.io”})
id firstName email 1 Bobby bobby@tables.io2 Nilufar nilu@email.com3 Jürgen jums@dums.edu4 Alice alice@prisma.io
TypeScript 是一种静态类型语言,建立在 JavaScript 之上。它为您提供了 JavaScript 的所有功能,并增加了对代码进行类型检查和验证的能力,通过在运行代码之前捕获错误并提供修复来节省您的时间。所有有效的 JavaScript 代码也是 TypeScript 代码,这使得 TypeScript 易于采用。
Prisma 是一个面向 Node.js 和 TypeScript 的 ORM,它通过从您的数据库模式自动生成类型,为您带来零成本的类型安全优势。 它非常适合构建可靠的数据密集型应用程序。Prisma 使您在将数据存储到关系数据库时更加自信和高效。您可以将其与任何 Node.js 服务器框架一起使用来与您的数据库进行交互。
The Prisma 模式 使用 Prisma 的建模语言来定义您的数据库模式并生成相应的 TypeScript 类型。它使数据建模变得简单直观,尤其是在建模关系时。
1// Define the `User` table in the database2model User {3 id String @id @default(cuid())4 email String @unique5 password String6 name String?7 posts Post[]8}9
10// Define the `Post` table in the database11model Post {12 id String @id @default(cuid())13 createdAt DateTime @default(now())14 title String15 content String?16 authorId String17 author User @relation(fields: [authorId], references: [id])18}
从 Prisma 模式生成的类型确保所有数据库查询都是类型安全的。Prisma Client 为您提供了出色的自动完成体验,因此您可以快速移动并确保不会编写无效的查询。
1type User = {2 id: string3 email: string4 password: string5 name: string | null6}7
8export type Post = {9 id: string10 createdAt: Date11 title: string12 content: string | null13 authorId: string14}
定义一次您的模式,Prisma 将为您生成 TypeScript 类型。无需在数据库模式和应用程序代码中的类型之间进行手动同步。
下面的代码演示了如何使用 Prisma 进行类型安全的数据库查询 - 对于所有查询,包括部分查询和关系。
使用 Prisma Client 的查询始终推断其返回类型,这使得推理返回数据变得容易 - 即使您获取关系也是如此。
1// Inferred type:2// User & {3// posts: Post[];4// }5const user = await prisma.user.create({6 data: {7 email: '[email protected]',8 password: '0ee4808f893b8e05bdd251048d5c4c8af8bb89403676dda95619841a481f8e87',9 name: 'Alice',10 posts: {11 create: {12 title: 'Learn how to use Prisma with TypeScript',13 content: 'https://prisma.org.cn/docs/',14 },15 },16 },17 include: {18 posts: true,19 },20})
使用 Prisma Client 的查询始终推断其返回类型,这使得推理返回数据变得容易 - 即使您获取关系也是如此。
1// Inferred type:2// User & {3// posts: Post[];4// }5const user = await prisma.user.create({6 data: {7 email: '[email protected]',8 password: '0ee4808f893b8e05bdd251048d5c4c8af8bb89403676dda95619841a481f8e87',9 name: 'Alice',10 posts: {11 create: {12 title: 'Learn how to use Prisma with TypeScript',13 content: 'https://prisma.org.cn/docs/',14 },15 },16 },17 include: {18 posts: true,19 },20})
Prisma Client 确保完全类型安全的数据库查询,以便您永远不会编写无效的查询
Prisma 的内置数据加载器确保优化和高效的数据库查询,即使对于 N+1 查询也是如此。
Prisma 在您编写查询时通过丰富的自动完成功能帮助您编写查询
使用 Prisma Client 的查询始终推断其返回类型,这使得推理您的数据变得容易。
将您的 Prisma 模式映射到数据库,以便您无需编写 SQL 来管理数据库模式。
Prisma Client 通过为常见数据库功能提供便捷的 API 来减少样板代码。
1const users = await prisma.user.findMany({2 where: {3 email: {4 endsWith: '@prisma.io',5 }6 },7 include: {8 p9 }10})
在 Prisma,我们热爱 TypeScript 并相信它的光明未来。自从 Prisma 诞生以来,我们一直将 TypeScript 编译器推向极限 为了提供前所未有的类型安全的数据库访问和丰富的自动完成功能,从而获得愉悦的开发体验。
Prisma 以类型安全为核心构建,以便您减少错误。通过利用 TypeScript 的结构类型系统,Prisma 将数据库查询映射到 结构类型 因此,您可以知道您编写的每个 Prisma Client 查询返回数据的精确形状。
TypeScript 柏林聚会始于 2019 年,是世界上最受欢迎的 TypeScript 聚会之一
使用 Prisma、TypeScript 和各种不同的框架和 API 技术的即用型示例项目
使用 hapi 和 Prisma 构建现代后端的教程系列
我们有多个渠道,您可以在其中与我们社区的成员以及 Prisma 团队互动。