跳至主要内容

将 Prisma Postgres 与 Deno Deploy 集成

15 分钟

Deno Deploy 包含一项功能,允许您直接在平台内预置 Prisma Postgres 数据库。本指南演示了如何使用一个将 HTTP 请求记录到数据库中的极简 Deno 应用程序,在 Deno Deploy 项目中集成 Prisma Postgres。

完成本指南后,您将拥有一个已部署的 Deno 应用程序,它使用 Prisma Client 和 runtime = "deno",向 Deno Deploy 中预置的 Prisma Postgres 数据库进行写入和读取操作。

先决条件

1. 创建并设置一个新的 Deno 项目

使用 deno init 命令创建一个新的 Deno 项目,该命令会生成一个包含主入口文件和配置的基本项目结构。

deno init prisma-postgres-deno-deploy
cd prisma-postgres-deno-deploy

1.1 为 Deno 配置 VS Code

为了确保 VS Code 将此识别为 Deno 项目并提供正确的 TypeScript 验证,您需要初始化工作区。否则,当使用 Deno.serve 等 Deno 特定 API 时,VS Code 将显示错误。

安装 VS Code 的 Deno 扩展,然后

  1. 选择 视图 > 命令面板 (或在 macOS 上按 Cmd+Shift+P,在 Windows 上按 Ctrl+Shift+P
  2. 运行命令 Deno: 初始化工作区配置

1.2 创建一个基本的 HTTP 服务器

更新 main.ts 文件以创建一个简单的 HTTP 服务器,它响应“Hello, World!”,在添加数据库功能之前为您的应用程序奠定基础。

main.ts
function handler(_req: Request): Response {
return new Response("Hello, World!");
}

Deno.serve(handler);

您可以通过运行以下命令在本地测试服务器

deno run dev

在浏览器中访问 localhost:8000 以查看应用程序运行。

1.3 将初始项目推送到 GitHub

要将您的项目连接到 Deno Deploy 并获取数据库连接字符串,您需要成功部署。设置一个 GitHub 存储库并将您的项目推送到其中。

2. 将项目部署到 Deno Deploy

将您的存储库部署到 Deno Deploy。任何后续提交都将触发自动重新部署。您现在需要部署,因为数据库字符串需要成功部署才能生成。

  1. 导航到 Deno Deploy 仪表盘 并选择 New App
  2. 按照 GitHub 的提示配置 GitHub 应用程序权限
  3. 在 Deno Deploy 界面中选择您的 GitHub 存储库
  4. 点击 Create App 完成部署

应用程序将自动部署。

3. 预置一个 Prisma Postgres 数据库

在 Deno Deploy 中预置一个 Prisma Postgres 数据库,并将其链接到您的应用程序

  1. 前往 Deno Deploy 仪表盘中的 Databases 部分
  2. 选择 Provision Database 并选择 Prisma Postgres
  3. 完成数据库配置并确认预置
  4. 点击 Assign 并选择您的应用程序
  5. 复制 Production connection string
  6. 将连接字符串添加到您的 .env 文件中
DATABASE_URL="postgresql://<username>:<password>@db.prisma.io:5432/<database_name>-production"

4. 配置 Prisma ORM

4.1 启用环境变量

要在本地开发期间访问数据库连接字符串,请配置 Deno 以使用 --env-file 标志从 .env 文件加载环境变量。

更新 deno.json 中的 dev 任务

deno.json
{
"tasks": {
"dev": "deno run --watch --env-file main.ts"
}
}

4.2 初始化 Prisma 并创建 schema

安装 Prisma Client、PostgreSQL 适配器和开发依赖项

deno install npm:@prisma/client npm:@prisma/adapter-pg npm:pg npm:prisma npm:@types/pg

在您的项目中初始化 Prisma,这将创建必要的配置文件和文件夹结构,用于定义您的数据库模型。

npx prisma init

使用这些更改更新 Prisma schema

  1. 将客户端输出从 prisma-client-js 更改为 prisma-client
  2. 添加 Deno 运行时配置。(Deno 正常运行需要此项)
  3. 添加 Log 模型以存储请求信息。
prisma/schema.prisma
generator client {
provider = "prisma-client"
output = "../generated/prisma"
runtime = "deno"
}

datasource db {
provider = "postgresql"
}

model Log {
id Int @id @default(autoincrement())
level Level
message String
meta Json
}

enum Level {
Info
Warn
Error
}

4.3 生成并应用迁移

迁移根据您的 Prisma schema 创建实际的数据库表。此命令生成 SQL 迁移文件并针对您的数据库执行它们,创建带有指定字段的 Log 表。

deno run -A npm:prisma migrate dev --name init
deno run -A npm:prisma generate

5. 更新应用程序以使用 Prisma

数据库配置完成后,更新您的应用程序以与数据库交互。此实现创建一个日志系统,捕获每个 HTTP 请求,将其存储在数据库中,并以 JSON 格式返回日志条目。

main.ts
import { PrismaClient } from "./generated/prisma/client.ts";
import { PrismaPg } from "npm:@prisma/adapter-pg";
import process from "node:process";

const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL,
});

const prisma = new PrismaClient({
adapter,
});

async function handler(request: Request) {
const url = new URL(request.url);
if (url.pathname === "/favicon.ico") {
return new Response(null, { status: 204 });
}

const log = await prisma.log.create({
data: {
level: "Info",
message: `${request.method} ${request.url}`,
meta: {
headers: JSON.stringify(request.headers),
},
},
});
const body = JSON.stringify(log, null, 2);
return new Response(body, {
headers: { "content-type": "application/json; charset=utf-8" },
});
}

Deno.serve(handler);

通过运行以下命令在本地测试应用程序

deno run dev
注意

它可能会要求您访问您的环境变量。选择 Allow 授予访问权限。

在浏览器中访问 localhost:8000 以查看应用程序运行。您应该会看到包含日志条目的 JSON 响应

{
"id": 1,
"level": "Info",
"message": "GET https://:8000/",
"meta": {
"headers": "..."
}
}

6. 部署应用程序

构建命令必须生成 Prisma 客户端代码,以确保其在生产环境中可用。

6.1 更新 Deno Deploy 中的构建命令

  1. 在 Deno Deploy 中进入应用程序并点击 Settings
  2. Build configuration 下,点击 Edit 并将 deno run -A npm:prisma generate 添加到构建命令中
  3. 点击 Save

6.2 将更改推送到 GitHub

提交并推送您的更改以触发自动部署

git add .
git commit -m "added prisma"
git push

返回 Deno Deploy,您应该会看到成功的构建。部署完成后,点击仪表盘右上角的部署 URL。

6.3 验证部署

当您访问已部署的应用程序时,您应该会看到如下响应

{
"id": 1,
"level": "Info",
"message": "GET https://prisma-postgres-deno-deploy.<org-name>.deno.net/",
"meta": {
"headers": "{}"
}
}

您完成了!每次刷新页面时,都会在您的数据库中创建一个新的日志条目。

下一步

现在您已经拥有一个连接到 Prisma Postgres 数据库的 Deno 应用程序,您可以

  • 增强您的数据模型 - 为您的 Prisma schema 添加关系、验证和索引
  • 保护您的 API - 实施身份验证、速率限制和适当的错误处理
  • 改进部署 - 为生产设置 CI/CD、监控和数据库备份

更多信息


与 Prisma 保持联系

通过以下方式与我们保持联系,继续你的 Prisma 之旅: 我们的活跃社区。保持信息灵通,参与其中,并与其他开发人员协作。

我们真诚地感谢你的参与,并期待你成为我们社区的一部分!

© . This site is unofficial and not affiliated with Prisma Data, Inc.