前言
在开发前端应用程序时,处理数据是不可避免的。因此,我们需要一些工具来管理和操作数据。在本文中,我们将介绍如何使用 Fastify 和 PostgreSQL 来管理数据。
Fastify 是一个快速的 Web 框架,它的设计旨在最大限度地提高性能。PostgreSQL 是一个强大的关系型数据库,它的开放源代码和出色的性能使它成为开发人员的首选之一。
安装依赖
在开始之前,您需要安装一些依赖项。
- Fastify
- Fastify Postgres
- PostgreSQL
在终端中运行以下命令:
npm install fastify fastify-postgres pg
配置 PostgreSQL
在我们开始应用程序之前,我们需要配置 PostgreSQL 数据库。
创建数据库
打开 PostgreSQL 命令行界面并键入以下命令:
CREATE DATABASE mydb;
创建表
现在我们需要创建一个表。我们将创建一个 users 表作为示例。在命令行界面中输入以下内容:
CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR NOT NULL, email VARCHAR NOT NULL UNIQUE, password VARCHAR NOT NULL );
添加数据
为了演示目的,我们将向用户表添加一些示例数据。在命令行界面输入以下内容:
INSERT INTO users (name, email, password) VALUES ('John Doe', 'johndoe@example.com', 'abcd1234'); INSERT INTO users (name, email, password) VALUES ('Jane Doe', 'janedoe@example.com', 'efgh5678');
创建 Fastify 应用程序
现在我们已经配置了 PostgreSQL 数据库,我们将创建一个 Fastify 应用程序。
首先,在项目的根目录中创建一个 server.js 文件。在文件中导入 Fastify 和 Fastify PostgreSQL:
const fastify = require('fastify')(); const fastifyPostgres = require('fastify-postgres');
接下来,连接到 PostgreSQL 数据库:
fastify.register(fastifyPostgres, { connectionString: 'postgres://username:password@localhost:5432/mydb' })
请注意,您需要将连接字符串替换为您自己的值。将 localhost 替换为您的数据库主机名,mydb 替换为您创建的数据库名称,username 和 password 替换为您的数据库登录凭据。
现在我们已经连接到数据库,让我们创建一个路由来获取用户列表:
fastify.get('/', async (request, reply) => { const client = await fastify.pg.connect(); const result = await client.query('SELECT * FROM users'); client.release(); return result.rows; });
该路由使用 pg.connect() 方法连接到数据库,然后使用 client.query() 方法执行 SQL 查询。最后,它将结果作为 JSON 对象发送回客户端。
在所有的资源使用完毕后,修改后将它们还回连接池,使用 client.release() 方法即可。
现在我们已经创建了一个 Fastify 应用程序,并且可以从数据库检索数据。
查询特定用户
接下来,我们将创建一个路由以获取特定用户的详细信息。在 server.js 文件中增加以下内容:
-- -------------------- ---- ------- ------------------- ----- --------- ------ -- - ----- ------ - ----- --------------------- ----- ------ - ----- -------------------- - ---- ----- ----- -- - ---- --------------------- ----------------- -- ------------------- --- -- - ----- --- ----------- ---- -- -------------------- --- -------- - ------ --------------- ---
这个路由接受一个 id 参数,该参数用于查询特定用户的详细信息。我们使用占位符 $1 表示查询。然后我们将请求参数用数组的形式提供到 client.query() 函数中,这样 PostgreSQL 可以避免 SQL 注入攻击。
如果查询结果为空,该路由将抛出一个错误,告诉客户端查询不到用户。
创建新用户
现在让我们创建一个路由来创建新的用户。
-- -------------------- ---- ------- ----------------- ----- --------- ------ -- - ----- - ----- ------ -------- - - ------------- ----- ------ - ----- --------------------- ----- ------ - ----- -------------------- ---- ----- ------ ------ --------- ------ ---- --- --- --------- --- ------ ------ ----------- ----------------- ------ --------------- ---
该路由接受一个包含 name、email 和 password 属性的请求体。它使用 client.query() 方法将用户数据插入到 users 表中。
RETURNING * 语句返回新插入的行。我们可以使用 result.rows[0] 获取插入的用户数据。
更新用户
接下来,我们将创建一个路由,以更新现有用户的详细信息。
-- -------------------- ---- ------- ------------------- ----- --------- ------ -- - ----- - ----- ------ -------- - - ------------- ----- ------ - ----- --------------------- ----- ------ - ----- -------------------- ----- --- ---- - --- ----- - --- -------- - -- ----- -- - -- --------- --- ------ ------ --------- -------------------- ----------------- -- ------------------- --- -- - ----- --- ----------- ---- -- -------------------- --- -------- - ------ --------------- ---
该路由接受一个 id 参数和一个包含 name、email 和 password 属性的请求体。它使用 client.query() 方法将更新后的用户数据更新到 users 表中。
RETURNING * 语句返回更新后的行。我们可以使用 result.rows[0] 获取更新后的用户数据。
如果查询结果为空,该路由将抛出一个错误,告诉客户端查询不到用户。
删除用户
最后,我们将创建一个路由以删除特定用户。
-- -------------------- ---- ------- ---------------------- ----- --------- ------ -- - ----- ------ - ----- --------------------- ----- ------ - ----- -------------------- ---- ----- ----- -- - -- --------- --- --------------------- ----------------- -- ------------------- --- -- - ----- --- ----------- ---- -- -------------------- --- -------- - ------ --------------- ---
该路由接受一个 id 参数,该参数用于查询特定用户的详细信息并从数据库删除。
RETURNING * 语句返回删除的行。我们可以使用 result.rows[0] 获取删除的用户数据。
如果查询结果为空,该路由将抛出一个错误,告诉客户端查询不到用户。
运行应用程序
现在我们已经完成了 Fastify 应用程序的开发,让我们运行应用程序并检查它是否工作。
首先,在终端中键入以下命令以启动服务器:
node server.js
然后,在浏览器中输入以下 URL,您应该会看到所有用户的列表:
http://localhost:3000/
接下来,在浏览器中输入以下 URL,您将获得指定用户的详细信息。请注意,您需要使用实际的 id 替换 {id}:
http://localhost:3000/{id}
现在,您可以使用 POSTman 或 cURL 发送 POST、PUT 和 DELETE 请求以创建、更新和删除用户。
结论
在本文中,我们介绍了如何使用 Fastify 和 PostgreSQL 来管理数据。我们学习了如何连接到数据库,查询数据,添加数据,更新数据和删除数据。我们建立了一个完整的 API,使我们能够管理我们的数据。
如果您想深入了解 Fastify 和 PostgreSQL,请查阅官方文档。这里只是一个简单的示例,而实际上您将需要学习更多知识才能开发更完整的应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66ff52c9d7413cc7552ab665