发布于 2026-01-06 1 阅读
0

PostgreSQL入门指南

PostgreSQL入门指南

为什么选择PostgreSQL?

在这篇文章中,我将探讨如何创建一个托管的 PostgreSQL 数据库(以下简称 SQL 数据库),并使用node_postgres连接到它。我拥有相当丰富的 MongoDB 数据库使用经验,并且使用 Prisma 构建了一个相当大的项目,该项目底层使用了 SQL,但我从未真正编写过 SQL 查询语句并直接与 SQL 数据库交互。

使用 Mongo Atlas(或 mLab)和 mongoose,我很容易就找到了启动和运行的方法,但是要启动和运行我自己的 SQL 数据库却很困难。

以下是需要考虑的因素:

  • 我不想使用一些奇怪的免费网站,因为我永远无法在生产环境中使用它们。
  • 我希望它价格便宜(也许我成功了?!)
  • 它必须是一个真正可行的解决方案,一个我能想象自己在实际的Node应用程序中使用的解决方案。(而不是使用像GoDaddy服务器那样已经为我配置好一堆数据库的服务。)

废话不多说,下面我将详细介绍:

  1. 使用 DigitalOcean 搭建并运行数据库。
  2. 使用 node-postgres 在 Node 中设置项目配置。
  3. 创建并测试表格。

创建 PostgreSQL 数据库

如果你还没用过 DigitalOcean,那它真的很棒。简单来说,它是一个可以搭建虚拟服务器等等的网站。一开始,我尝试自己搭建服务器并安装 MySQL(运行费用大概每月 5 美元),但那越来越复杂,而且我的最终目标只是能够访问 SQL 数据库来编写前端应用程序,所以我不想把所有时间都花在这上面。所以……

我最终选择了 DigitalOcean 的托管数据库。虽然每月 15 美元,但比上课便宜多了,而且很靠谱,还帮我节省了大量时间(要知道,管理数据库可是需要全职工作的)。DigitalOcean 还会提供推荐码,注册后可以获得一定期限(通常是 30-60 天)的积分,而我正好有积分,所以可以免费试用!如果你也想试试,可以用我的推荐码注册,就能获得 50 美元的积分,有效期 30 天,让你免费上手。

设置 DigitalOcean 数据库

  1. 注册 DigitalOcean
  2. 创建一个新项目
  3. 创建一个托管数据库。我使用的是 PostgreSQL,截至撰写本文时,它是唯一可选的数据库。你需要在这里设置一些选项,但操作起来非常简单明了。创建托管数据库
  4. 数据库将会创建完成,您可以在项目中看到它。请前往该项目完成设置。数据库列表
  5. 添加您的 IP 地址,以防止数据库访问权限对公众开放。IP地址
  6. 下载SSL证书,我们将使用该证书进行连接。SSL

干得漂亮!你的数据库已经启动并运行了。

连接到数据库

我并不打算写一篇关于如何开发完整应用程序的教程,所以我们这里只介绍几个步骤。首先,我们将安装 node-postgres,然后编写一个基本查询来创建一个新表并将其记录到控制台。

项目设置

连接只需要两样东西:一个用于连接的 .js 文件,以及你从 DigitalOcean 下载的 .crt 证书。以下是我的文件结构。

postgresql-tutorial
  /certificate.crt (I renamed this)
  /connect.js (you can name whatever you want)
Enter fullscreen mode Exit fullscreen mode

设置连接

首先,这是我连接数据库所需的配置。所有配置都来自node-postgres 的文档,但我添加了一些注释来解释每个部分。所有配置选项都可以在你的 DigitalOcean 账户中找到,如下图所示。
配置选项

// node-postgres also support a pool connection, but I was more familiar with the Client type so I started with that
const { Client } = require('pg');
// fs is used to read the certificate
const fs = require('fs');

const config = {
  // everything here you can get from the "Connection Details" when viewing your database in DigitalOcean
  user: 'doadmin',
  host: 'db-postgresql-nyc1-21328-do-user-4669604-0.db.ondigitalocean.com',
  database: 'defaultdb',
  password: 'tqjgkd6uxyqger6n',
  port: 25060,
  /* You have to include the ssl options because DigitalOcean requires them.
  This is essentially just added on from the boilerplate config in the node-postgres docs */
  ssl : {
    rejectUnauthorized : false,
    ca: fs.readFileSync("./certificate.crt").toString(), //make sure name matches your certificate name you downloaded
  }
}

// creates a new Client instance with the config options above (you can also just put them directly in as argument)
const client = new Client(config);

// Connects! (Or tells me I don't know what I'm doing)
client.connect((err) => {
  if (err) {
    console.log("Connection error!", err)
  } else {
    console.log("Connection to DB successful")
  }
});
Enter fullscreen mode Exit fullscreen mode

测试数据库

使用上面的代码(以及您自己的配置选项,因为上面的配置选项已不再有效),您应该会在控制台中看到连接成功。从连接成功开始,操作数据库就非常简单了。基本上,node-postgres 提供了SQL 查询语句,您可以传入一个 SQL 查询。我不会深入讲解这部分内容,毕竟,我最初的目的是为了更好地掌握这方面。如果查询成功,将会返回一个响应对象。

在同一个 connect.js 文件中,添加以下代码。

const makeTable = `
  CREATE TABLE products (
  product_no integer,
  name text,
  price numeric
);`;

const testQuery = `SELECT * FROM products`

client.query(makeTable) //pass in the testQuery to see if making the table was successful
  .then(res => console.log(res))
  .catch(e => console.error(e))
  .then(() => client.end())

Enter fullscreen mode Exit fullscreen mode

添加这些代码行后,你应该能够运行node connect.js并看到返回的响应对象。

本质上,`client.query` 接收一个 `makeTable` SQL 查询(我从PostgreSQL 文档中获取的),该查询是一个 Promise,它会记录返回的响应或错误。最后,连接被关闭。

testQuery您可以看到,您可以传递第二个查询client.query(替换 makeTable),并且您应该能够获得另一个响应对象,其中显示了您最初创建的表的详细信息。

就是这样。希望这篇文章对其他人也有帮助,让他们能够快速上手,在实际应用中使用 SQL!

我在星巴克里空调开得太冷,手都快冻僵了,所以匆匆忙忙地写了这篇帖子。如果有什么不清楚的地方,请告诉我,我会修改和澄清!

文章来源:https://dev.to/doylecodes/getting-started-with-postgresql-5g29