Hapi 框架中使用 hapi-node-postgres 操作 Postgres 数据库

在现代 Web 应用程序中,数据库是一个不可或缺的组成部分。PostgreSQL 是一种流行的开源关系型数据库,它提供了高度的可靠性、可扩展性和安全性。在开发 Node.js 应用程序时,可以使用 Hapi 框架来轻松地构建 Web 服务器。

在本文中,我们将介绍如何使用 Hapi 框架来操作 PostgreSQL 数据库。我们将使用 hapi-node-postgres 模块来连接到数据库,并执行一些基本的 CRUD 操作。

安装和配置

首先,我们需要安装 hapi 和 hapi-node-postgres 模块。可以使用以下命令来安装这些模块:

npm install hapi hapi-node-postgres

接下来,我们需要创建一个 PostgreSQL 数据库。可以使用以下命令来创建一个名为 "mydatabase" 的数据库:

createdb mydatabase

现在,我们需要创建一个数据库表。我们将创建一个名为 "users" 的表,该表将包含以下列:id、name 和 email。可以使用以下 SQL 命令来创建该表:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name TEXT NOT NULL,
  email TEXT NOT NULL UNIQUE
);

现在,我们需要在 Hapi 应用程序中配置数据库连接。可以使用以下代码来创建一个连接池,并将其添加到服务器实例中:

const { Pool } = require('pg');

const pool = new Pool({
  user: 'postgres',
  host: 'localhost',
  database: 'mydatabase',
  password: 'mypassword',
  port: 5432,
});

const server = Hapi.server({
  port: 3000,
  host: 'localhost',
});

server.app.db = pool;

在上面的代码中,我们创建了一个名为 "pool" 的连接池,并将其添加到服务器实例中。我们还指定了数据库的连接参数,如用户名、主机、端口和密码。这些参数应该根据您的实际情况进行更改。

基本操作

现在,我们已经成功地配置了数据库连接,可以开始执行一些基本的 CRUD 操作了。下面是一些示例代码,演示如何在 Hapi 应用程序中使用 hapi-node-postgres 模块来执行这些操作:

// 获取所有用户
server.route({
  method: 'GET',
  path: '/users',
  handler: async (request, h) => {
    const { rows } = await request.server.app.db.query('SELECT * FROM users');
    return rows;
  },
});

// 获取单个用户
server.route({
  method: 'GET',
  path: '/users/{id}',
  handler: async (request, h) => {
    const { rows } = await request.server.app.db.query('SELECT * FROM users WHERE id = $1', [request.params.id]);
    return rows[0];
  },
});

// 创建用户
server.route({
  method: 'POST',
  path: '/users',
  handler: async (request, h) => {
    const { name, email } = request.payload;
    const { rows } = await request.server.app.db.query('INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *', [name, email]);
    return rows[0];
  },
});

// 更新用户
server.route({
  method: 'PUT',
  path: '/users/{id}',
  handler: async (request, h) => {
    const { name, email } = request.payload;
    const { rows } = await request.server.app.db.query('UPDATE users SET name = $1, email = $2 WHERE id = $3 RETURNING *', [name, email, request.params.id]);
    return rows[0];
  },
});

// 删除用户
server.route({
  method: 'DELETE',
  path: '/users/{id}',
  handler: async (request, h) => {
    const { rows } = await request.server.app.db.query('DELETE FROM users WHERE id = $1 RETURNING *', [request.params.id]);
    return rows[0];
  },
});

在上面的代码中,我们定义了几个路由,用于执行基本的 CRUD 操作。在每个路由的处理程序中,我们使用 hapi-node-postgres 模块来执行 SQL 查询,并从查询结果中返回所需的数据。

总结

在本文中,我们介绍了如何在 Hapi 框架中使用 hapi-node-postgres 模块来操作 PostgreSQL 数据库。我们演示了如何配置数据库连接,并执行一些基本的 CRUD 操作。希望本文对您有所帮助,并能够启发您在自己的项目中使用 Hapi 和 PostgreSQL。

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