跳至主要内容

连接到 Postgres

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

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

设置 Postgres

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

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

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

从 Postgres 收集凭据

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

Supabase

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

  1. 导航到左侧的数据库选项卡。
  2. 转到项目设置 >> 数据库,并从连接字符串 >> URI 字段复制连接字符串。这是您用于连接到数据库的连接字符串。将您之前保存的密码插入此字符串,然后将字符串保存到某个地方 - 您以后会需要它。

psql

如果您使用的是 psql,您通常可以通过运行以下命令找到连接信息

test=# \conninfo

您的 Postgres 连接字符串将采用以下形式

postgres://user:[email protected]:5432/deploy?sslmode=disable

在 Deno Deploy 中创建项目

接下来,让我们在 Deno Deploy 中创建一个项目,并使用必要的环境变量进行设置。

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

postgres_env_variable

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