连接到 Postgres
本教程介绍如何从部署在 Deno Deploy 上的应用程序连接到 Postgres 数据库。
您可以在此处找到一个更全面的教程,它基于 Postgres 构建了一个示例应用程序。
设置 Postgres 跳转到标题
本教程将完全侧重于以未加密方式连接到 Postgres。如果您想使用自定义 CA 证书进行加密,请参阅此处的文档。
首先,我们需要创建一个新的 Postgres 实例供我们连接。在本教程中,我们将使用 Supabase,因为他们提供免费的托管 Postgres 实例。如果您想在其他地方托管数据库,也可以这样做。
- 访问 https://app.supabase.io/ 并点击 New project(新建项目)。
- 为您的数据库选择一个名称、密码和区域。请务必保存密码,因为稍后会用到。
- 点击 Create new project(创建新项目)。创建项目可能需要一些时间,请耐心等待。
从 Postgres 获取凭据 跳转到标题
设置好 Postgres 数据库后,从您的 Postgres 实例中收集连接信息。
Supabase 跳转到标题
对于上面的 Supabase 实例,获取您的连接信息
- 导航到左侧的 Database(数据库)选项卡。
- 转到 Project Settings(项目设置)>> Database(数据库),并从 Connection String(连接字符串)>> URI 字段复制连接字符串。这是您将用于连接数据库的连接字符串。将您之前保存的密码插入到此字符串中,然后将其保存到某个地方 — 稍后会用到。
psql 跳转到标题
如果您正在使用 psql,通常可以通过运行以下命令找到连接信息
test=# \conninfo
您的 Postgres 连接字符串将采用以下形式
postgres://user:password@127.0.0.1:5432/deploy?sslmode=disable
在 Deno Deploy 中创建项目 跳转到标题
接下来,让我们在 Deno Deploy 中创建一个项目,并配置必要的环境变量。
- 访问 https://dash.deno.com/new(如果尚未登录,请使用 GitHub 登录),然后在 Deploy from the command line(从命令行部署)下点击 + Empty Project(+ 空项目)。
- 现在点击项目页面上的 Settings(设置)按钮。
- 导航到 Environment Variables(环境变量)部分并添加以下密钥。
DATABASE_URL
- 其值应为您在上一步中检索到的连接字符串。
编写连接到 Postgres 的代码 跳转到标题
要读写 Postgres,请导入一个合适的 Postgres 模块,例如 JSR 中的这个,从环境变量中读取连接字符串,然后创建一个连接池。
import { Pool } from "jsr:@bartlomieju/postgres";
// Get the connection string from the environment variable "DATABASE_URL"
const databaseUrl = Deno.env.get("DATABASE_URL")!;
// Create a database pool with three connections that are lazily established
const pool = new Pool(databaseUrl, 3, true);
// Connect to the database
const connection = await pool.connect();
try {
// Create the table
await connection.queryObject`
CREATE TABLE IF NOT EXISTS todos (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL
)
`;
} finally {
// Release the connection back into the pool
connection.release();
}
将应用程序部署到 Deno Deploy 跳转到标题
完成应用程序编写后,您可以将其部署到 Deno Deploy。
为此,请返回您的项目页面 https://dash.deno.com/projects/<project-name>
。
您应该会看到几个部署选项
除非您想添加构建步骤,否则我们建议您选择 GitHub 集成。
有关在 Deno Deploy 上部署的不同方式和不同配置选项的更多详细信息,请参阅此处。