On this page
连接到 Postgres
本教程介绍如何从部署在 Deno Deploy 上的应用程序连接到 Postgres 数据库。
您可以在 这里 找到一个更全面的教程,该教程将在 Postgres 上构建一个示例应用程序。
设置 Postgres Jump to heading
本教程将完全集中于无加密连接到 Postgres。如果您希望使用自定义 CA 证书进行加密,请使用 这里 的文档。
要开始,我们需要为我们要连接的 Postgres 实例创建一个新的实例。对于本教程,我们将使用 Supabase,因为它们提供免费的托管 Postgres 实例。如果您希望将数据库托管在其他地方,您也可以这样做。
- 访问 https://app.supabase.io/ 并单击 新项目。
- 为您的数据库选择一个名称、密码和地区。确保保存密码,因为稍后您将需要它。
- 单击 创建新项目。创建项目可能需要一些时间,请耐心等待。
从 Postgres 获取凭据 Jump to heading
设置完 Postgres 数据库后,从您的 Postgres 实例中收集连接信息。
Supabase Jump to heading
对于上述 Supabase 实例,要获取连接信息:
- 导航到左侧的 数据库 选项卡。
- 转到 项目设置 >> 数据库,并从 连接字符串 >> URI 字段中复制连接字符串。这是您将用来连接数据库的连接字符串。将您之前保存的密码插入该字符串中,然后将其保存到某处 - 您稍后会需要它。
psql Jump to heading
如果您使用 psql,通常可以通过运行以下命令找到连接信息:
test=# \conninfo
您的 Postgres 连接字符串将采用以下形式:
postgres://user:password@127.0.0.1:5432/deploy?sslmode=disable
在 Deno Deploy 中创建项目 Jump to heading
接下来,让我们在 Deno Deploy 中创建一个项目,并设置所需的环境变量:
- 转到 https://dash.deno.com/new(如果尚未登录,请用 GitHub 登录),然后在 从命令行部署 下点击 + 空项目。
- 现在点击项目页面上的 设置 按钮。
- 导航到 环境变量 部分,并添加以下密钥。
DATABASE_URL
- 值应为您在上一步中获取的连接字符串。
编写连接到 Postgres 的代码 Jump to heading
要进行读写操作,导入 Postgres 模块,从环境变量中读取连接字符串,并创建一个连接池。
import { Pool } from "https://deno.land/x/postgres@v0.17.0/mod.ts";
// 从环境变量 "DATABASE_URL" 获取连接字符串
const databaseUrl = Deno.env.get("DATABASE_URL")!;
// 创建一个带有三个懒惰建立的连接的数据库连接池
const pool = new Pool(databaseUrl, 3, true);
// 连接到数据库
const connection = await pool.connect();
try {
// 创建表
await connection.queryObject`
CREATE TABLE IF NOT EXISTS todos (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL
)
`;
} finally {
// 将连接释放回连接池
connection.release();
}
将应用程序部署到 Deno Deploy Jump to heading
完成应用程序的编写后,您可以将其部署到 Deno Deploy。
为此,请返回到您的项目页面,网址为 https://dash.deno.com/projects/<project-name>
。
您应该会看到几个部署选项:
除非您希望添加构建步骤,否则我们建议您选择 GitHub 集成。
有关在 Deno Deploy 上以不同方式部署和不同配置选项的更多详细信息,请阅读 这里。