deno.com
本页内容

连接到 Postgres

本教程介绍如何从部署在 Deno Deploy 上的应用程序连接到 Postgres 数据库。

您可以在此处找到一个更全面的教程,它基于 Postgres 构建了一个示例应用程序。

设置 Postgres 跳转到标题

本教程将完全侧重于以未加密方式连接到 Postgres。如果您想使用自定义 CA 证书进行加密,请参阅此处的文档。

首先,我们需要创建一个新的 Postgres 实例供我们连接。在本教程中,我们将使用 Supabase,因为他们提供免费的托管 Postgres 实例。如果您想在其他地方托管数据库,也可以这样做。

  1. 访问 https://app.supabase.io/ 并点击 New project(新建项目)。
  2. 为您的数据库选择一个名称、密码和区域。请务必保存密码,因为稍后会用到。
  3. 点击 Create new project(创建新项目)。创建项目可能需要一些时间,请耐心等待。

从 Postgres 获取凭据 跳转到标题

设置好 Postgres 数据库后,从您的 Postgres 实例中收集连接信息。

Supabase 跳转到标题

对于上面的 Supabase 实例,获取您的连接信息

  1. 导航到左侧的 Database(数据库)选项卡。
  2. 转到 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 中创建一个项目,并配置必要的环境变量。

  1. 访问 https://dash.deno.com/new(如果尚未登录,请使用 GitHub 登录),然后在 Deploy from the command line(从命令行部署)下点击 + Empty Project(+ 空项目)。
  2. 现在点击项目页面上的 Settings(设置)按钮。
  3. 导航到 Environment Variables(环境变量)部分并添加以下密钥。
  • DATABASE_URL - 其值应为您在上一步中检索到的连接字符串。

postgres_env_variable

编写连接到 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 上部署的不同方式和不同配置选项的更多详细信息,请参阅此处

您找到所需内容了吗?

隐私政策