使用 Fastify 和 PostgreSQL 构建数据库应用程序

在前端开发中,构建数据库应用程序是常见的任务之一。在本文中,我将介绍如何使用 Fastify 和 PostgreSQL 构建一个完整的数据库应用程序。我将详细介绍 Fastify 和 PostgreSQL 的基础知识,以及如何使用它们来构建一个功能齐全的数据库应用程序。

什么是 Fastify?

Fastify 是一个快速、低开销且高效的 Web 框架。它是构建服务器应用程序的一种方式,使用它可以快速开发高性能的服务端应用程序。它提供了丰富的插件和中间件,可以轻松地自定义应用程序并添加各种功能。

什么是 PostgreSQL?

PostgreSQL 是一个强大的开源关系型数据库,它是一种可靠的和高度扩展的数据库解决方案。它支持多种数据类型和查询语言,并具有对 ACID(原子性、一致性、隔离性和持久性)事务的支持。由于其功能丰富,PostgreSQL 在面向企业级开发的应用程序中非常流行。

在本例中,我们将使用 Fastify 和 PostgreSQL 创建一个用户管理系统。这个应用程序将能够记录、编辑和删除用户记录。我们需要创建一个用户列表并向其中添加一些数据,以便可以在我们的应用程序中进行操作。

安装 Fastify 和 PostgreSQL

首先,我们需要安装 Fastify 和 PostgreSQL。使用 npm 包管理器来安装它们:

npm install fastify fastify-postgres pg

其中:

  1. fastify 是 Fastify 框架的核心模块;
  2. fastify-postgres 是用于连接 PostgreSQL 数据库的 Fastify 插件;
  3. pg 是 Node.js 的 PostgreSQL 客户端库。

连接到 PostgreSQL 数据库

我们将使用 Fastify 和 PostgreSQL 插件来连接到数据库。我们需要指定数据库连接参数,包括用户名、密码、主机名和端口号。

const fastify = require("fastify");
const fastifyPostgres = require("fastify-postgres");

const app = fastify();

app.register(fastifyPostgres, {
  connectionString: "postgres://abhi:password@localhost:5432/users",
})
  .then(() => console.log("PostgreSQL database connected..."))
  .catch((err) => console.log(err));

app.listen(3000, () => console.log("Server running on port 3000..."));

此代码将连接到名为“用户”的数据库,并输出“PostgreSQL 数据库已连接”消息。如果连接失败,则输出错误消息。现在,我们已经连接到数据库并准备开始开发其他功能。

创建用户记录

我们需要创建一个路由来处理 POST 请求,它将添加新的用户记录到数据库中。

app.post("/users", async (req, reply) => {
  const { name, email } = req.body;

  const result = await app.pg.query(
    "INSERT INTO users (name, email) VALUES ($1, $2) RETURNING id",
    [name, email]
  );

  reply.send({ id: result.rows[0].id });
});

此代码将接收一个包含名称和电子邮件的 JSON 对象,并将其添加到用户表中。返回的 JSON 对象将包含添加用户的 ID。

获取用户记录列表

我们需要创建一个路由来处理 GET 请求,它将返回用户记录列表。

app.get("/users", async (req, reply) => {
  const result = await app.pg.query("SELECT * FROM users");
  reply.send(result.rows);
});

此代码将从用户表中获取所有记录,并将其返回为 JSON 数组。

获取单个用户记录

我们需要创建一个路由来处理 GET 请求,它将返回单个用户记录。

app.get("/users/:id", async (req, reply) => {
  const { id } = req.params;

  const result = await app.pg.query("SELECT * FROM users WHERE id = $1", [id]);

  if (result.rowCount !== 1) {
    reply.send(404, { message: "User not found" });
  } else {
    reply.send(result.rows[0]);
  }
});

此代码将获取指定 ID 的用户记录,并将其作为 JSON 对象返回。如果找不到用户,则返回 404 状态码和错误消息。

更新用户记录

我们需要创建一个路由来处理 PUT 请求,它将更新现有用户记录。

app.put("/users/:id", async (req, reply) => {
  const { id } = req.params;
  const { name, email } = req.body;

  const result = await app.pg.query(
    "UPDATE users SET name=$1, email=$2 WHERE id=$3 RETURNING id",
    [name, email, id]
  );

  if (result.rowCount !== 1) {
    reply.send(404, { message: "User not found" });
  } else {
    reply.send({ id: result.rows[0].id });
  }
});

此代码将更新指定 ID 的用户记录,并返回更新的用户的 ID。如果找不到用户,则返回 404 状态码和错误消息。

删除用户记录

我们需要创建一个路由来处理 DELETE 请求,它将删除现有用户记录。

app.delete("/users/:id", async (req, reply) => {
  const { id } = req.params;

  const result = await app.pg.query("DELETE FROM users WHERE id=$1", [id]);

  if (result.rowCount !== 1) {
    reply.send(404, { message: "User not found" });
  } else {
    reply.send({ id });
  }
});

此代码将删除指定 ID 的用户记录,并将其 ID 返回。如果找不到用户,则返回 404 状态码和错误消息。

总结

在本文中,我们使用 Fastify 和 PostgreSQL 构建了一个用户管理系统。我们涵盖了 Fastify 和 PostgreSQL 的基础知识,并使用示例代码演示了如何连接数据库、添加、获取、更新和删除用户记录。这个应用程序是一个很好的初学者入门示例,可以帮助您了解如何使用 Fastify 和 PostgreSQL 构建真实的应用程序。

在日常开发中,使用 Fastify 和 PostgreSQL 可以快速构建强大的数据库应用程序。如果您想学习更多关于 Fastify 和 PostgreSQL 的知识,我建议您查阅相关的文档、教程和示例。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a9d7f3add4f0e0ff346638