轻松、类型安全的数据库访问
Express 服务器中

使用 Prisma 从 Express 应用程序中的 MySQL、PostgreSQL 和 SQL Server 数据库查询数据 - 适用于 JavaScript 和 TypeScript 的更好的 ORM。

tech

什么是 Prisma?

Prisma 使数据操作变得轻松!它提供类型安全的 Node.js & TypeScript ORM、全局数据库缓存、连接池和实时数据库事件。

查询
// Creating a new record
await prisma.user.create({
firstName: “Alice”,
email: “alice@prisma.io”
})
id firstName email
1 Bobby bobby@tables.io
2 Nilufar nilu@email.com
3 Jürgen jums@dums.edu
4 Alice alice@prisma.io

Prisma 和 Express 如何协同工作

Prisma ORM 是一款新一代 ORM,用于在 Express 服务器中查询您的数据库。您可以将其用作编写纯 SQL 查询、knex.js 等查询构建器或 TypeORM、MikroORM 和 Sequelize 等传统 ORM 的替代方案。
Prisma ORM 可用于构建 RESTGraphQL API,并与微服务和整体架构无缝集成。

您还可以使用我们的其他工具增强 Prisma ORM 的使用
Prisma Accelerate 是一款全局数据库缓存和可扩展连接池,可以加快您的数据库查询速度。
Prisma Pulse 使您能够以类型安全的方式构建反应式实时应用程序。

Prisma 和 Express 代码示例

Prisma 提供了一个便捷的数据库访问层,与 Express 完美集成。

下面的代码演示了在使用 Express 构建 API 服务器时 Prisma 的各种用途。

REST API

REST API

Prisma 用于您的路由处理程序中,以便在数据库中读取和写入数据。

1import express from 'express'
2import { PrismaClient } from '@prisma/client'
3
4const prisma = new PrismaClient()
5const app = express()
6
7app.get('/feed', async (req, res) => {
8 const posts = await prisma.post.findMany({
9 where: { published: true },
10 include: { author: true },
11 })
12 res.json(posts)
13})
14
15app.post('/post', async (req, res) => {
16 const { title, content, authorEmail } = req.body
17 const post = await prisma.post.create({
18 data: {
19 title,
20 content,
21 published: false,
22 author: { connect: { email: authorEmail } },
23 },
24 })
25 res.json(post)
26})
27
28app.put('/publish/:id', async (req, res) => {
29 const { id } = req.params
30 const post = await prisma.post.update({
31 where: { id },
32 data: { published: true },
33 })
34 res.json(post)
35})
36
37app.delete('/user/:id', async (req, res) => {
38 const { id } = req.params
39 const user = await prisma.user.delete({
40 where: {
41 id,
42 },
43 })
44 res.json(user)
45})
46
47const server = app.listen(3000)
GraphQL API
Prisma 模式

REST API

Prisma 用于您的路由处理程序中,以便在数据库中读取和写入数据。

1import express from 'express'
2import { PrismaClient } from '@prisma/client'
3
4const prisma = new PrismaClient()
5const app = express()
6
7app.get('/feed', async (req, res) => {
8 const posts = await prisma.post.findMany({
9 where: { published: true },
10 include: { author: true },
11 })
12 res.json(posts)
13})
14
15app.post('/post', async (req, res) => {
16 const { title, content, authorEmail } = req.body
17 const post = await prisma.post.create({
18 data: {
19 title,
20 content,
21 published: false,
22 author: { connect: { email: authorEmail } },
23 },
24 })
25 res.json(post)
26})
27
28app.put('/publish/:id', async (req, res) => {
29 const { id } = req.params
30 const post = await prisma.post.update({
31 where: { id },
32 data: { published: true },
33 })
34 res.json(post)
35})
36
37app.delete('/user/:id', async (req, res) => {
38 const { id } = req.params
39 const user = await prisma.user.delete({
40 where: {
41 id,
42 },
43 })
44 res.json(user)
45})
46
47const server = app.listen(3000)

为什么选择 Prisma 和 Express?

灵活的架构

无论您是构建微服务还是整体应用程序,Prisma 都能完美地融入您的技术栈。

更高的生产力

Prisma 为您提供数据库查询的自动完成功能,带来出色的开发者体验和完整的类型安全。

类型安全的数据库客户端

Prisma Client 确保完全类型安全的数据库查询,并提供自动完成功能等优势 - 即使在 JavaScript 中也是如此。

直观的數據建模

Prisma 的声明式建模语言简单明了,让您直观地描述数据库模式。

轻松的数据库迁移

从声明式的 Prisma 模式生成可预测且可自定义的 SQL 迁移。

专为构建 API 而设计

Prisma Client 通过提供针对常见 API 功能(例如分页、过滤器等)的查询来减少样板代码。

精选的 Prisma & Express 示例

如何使用 Prisma 和 PostgreSQL 构建 REST API

使用 Express、Prisma 和 PostgreSQL 构建 REST API 的综合教程

REST API 入门套件

一个用于 REST API 的即用型示例项目,该项目使用 SQLite 数据库

GraphQL API 入门套件

一个用于 GraphQL API 的即用型示例项目,该项目使用 SQLite 数据库