📅  最后修改于: 2023-12-03 15:22:14.674000             🧑  作者: Mango
在 Web 应用程序中,表单是常见的交互方式。在一些情况下,我们需要快速地处理表单,将数据存储到数据库中。使用 node-postgres 库可以帮助我们快速地创建简单的表单,并将表单数据存储到 PostgreSQL 数据库中。
首先需要安装 node-postgres 库。可以使用 npm 来进行安装,如下所示:
npm install pg
在代码中使用时,需要引入 pg 模块:
const { Pool } = require('pg');
在使用 node-postgres 库时,首先需要连接到 PostgreSQL 数据库。可以使用 Pool
类来建立一个连接池,连接池可以帮助我们自动管理连接,并提高连接的复用率。
连接池的配置信息可以在创建连接池时传入。一个常见的连接池配置如下:
const pool = new Pool({
user: 'postgres',
host: 'localhost',
database: 'mydb',
password: 'mypassword',
port: 5432,
});
其中 user
、host
、database
、password
和 port
属性是连接数据库时需要的参数。这些参数的值应该根据实际情况进行配置。
在创建表单时,我们首先需要渲染一个 HTML 页面。假设我们要创建一个包含姓名和年龄两个字段的表单,那么 HTML 页面可以如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Quick Form</title>
</head>
<body>
<form method="POST" action="/">
<label for="name">Name:</label>
<input type="text" name="name" id="name">
<br>
<label for="age">Age:</label>
<input type="text" name="age" id="age">
<br>
<button type="submit">Submit</button>
</form>
</body>
</html>
在表单中,我们使用了 POST
请求方法,并将表单数据提交到了根目录 /
。
在接收到表单提交请求时,我们需要使用 node-postgres 库将表单数据存储到 PostgreSQL 数据库中。下面是一个处理表单提交请求的示例代码:
const express = require('express');
const { Pool } = require('pg');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;
const pool = new Pool({
user: 'postgres',
host: 'localhost',
database: 'mydb',
password: 'mypassword',
port: 5432,
});
app.use(bodyParser.urlencoded({ extended: false }));
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
app.post('/', async (req, res) => {
const client = await pool.connect();
try {
await client.query('BEGIN');
const queryText = 'INSERT INTO users(name, age) VALUES($1, $2)';
const values = [req.body.name, req.body.age];
await client.query(queryText, values);
await client.query('COMMIT');
res.send('Data inserted successfully');
} catch (e) {
await client.query('ROLLBACK');
throw e;
} finally {
client.release();
}
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
在上面的代码中,我们首先使用 Express 模块创建了一个 Web 应用程序,并配置了端口号为 3000。
然后,我们创建了一个连接池,并使用 bodyParser 模块来解析表单提交数据。接着,我们通过 app.get
方法来设置根目录请求处理方法,并返回之前创建的表单页面。
在 app.post
方法中,我们使用 await
来等待连接池中的一个连接,并使用 client.query
方法来执行 SQL 查询。由于涉及到数据修改操作,我们在 client.query
方法执行前使用了 client.query('BEGIN')
方法来开启事务。如果 SQL 查询执行成功,我们将调用 client.query('COMMIT')
方法来提交事务;如果发生了异常,我们则将调用 client.query('ROLLBACK')
方法来回滚事务。
最后,我们在 finally
代码块中使用 client.release()
方法来释放连接,并通过 res.send
方法返回插入数据成功的信息。
使用 node-postgres 库可以帮助我们快速地创建并处理简单的表单,同时保证了对 PostgreSQL 数据库的事务处理和连接管理。在实际应用中,我们还可以对代码进行优化,比如使用连接池、使用参数化 SQL 查询、添加异常处理等。