连接到 Postgres
本教程介绍如何从部署在 Deno Deploy 上的应用程序连接到 Postgres 数据库。
您可以在 此处找到一个更全面的教程,该教程在 Postgres 之上构建了一个示例应用程序。
设置 Postgres
本教程将完全专注于连接到未加密的 Postgres。如果您想使用自定义 CA 证书进行加密,请使用 此处的文档。
首先,我们需要创建一个新的 Postgres 实例供我们连接。在本教程中,我们将使用 Supabase,因为它们提供免费的托管 Postgres 实例。如果您想将数据库托管在其他地方,也可以这样做。
- 访问 https://app.supabase.io/ 并点击新建项目。
- 选择一个数据库的名称、密码和区域。请务必保存密码,因为您以后会需要它。
- 点击创建新项目。创建项目可能需要一段时间,请耐心等待。
从 Postgres 收集凭据
设置好 Postgres 数据库后,从您的 Postgres 实例收集连接信息。
Supabase
对于上面的 Supabase 实例,要获取连接信息
- 导航到左侧的数据库选项卡。
- 转到项目设置 >> 数据库,并从连接字符串 >> URI 字段复制连接字符串。这是您用于连接到数据库的连接字符串。将您之前保存的密码插入此字符串,然后将字符串保存到某个地方 - 您以后会需要它。
psql
如果您使用的是 psql,您通常可以通过运行以下命令找到连接信息
test=# \conninfo
您的 Postgres 连接字符串将采用以下形式
postgres://user:[email protected]:5432/deploy?sslmode=disable
在 Deno Deploy 中创建项目
接下来,让我们在 Deno Deploy 中创建一个项目,并使用必要的环境变量进行设置。
- 访问 https://dash.deno.com/new(如果您还没有登录,请使用 GitHub 登录),然后点击+ 空项目,该项目位于从命令行部署下。
- 现在点击项目页面上的设置按钮。
- 导航到环境变量部分,并添加以下密钥。
DATABASE_URL
- 该值应为您在最后一步中检索到的连接字符串。
编写连接到 Postgres 的代码
要读写 Postgres,请导入 Postgres 模块,从环境变量中读取连接字符串,并创建一个连接池。
import { Pool } from "https://deno.land/x/[email protected]/mod.ts";
// 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 上部署的不同方式以及不同配置选项的更多详细信息,请阅读 此处。