在进行 Web 开发和数据库操作时,我们常常会用到 PostgreSQL 数据库。而 @monaco-ex/pg-promise 是一个用于操作 PostgreSQL 的 Node.js 包,它是 pg-promise 模块的增强版本。
在本文中,我们将学习如何使用 @monaco-ex/pg-promise 来连接和操作 PostgreSQL 数据库。
安装
在使用 @monaco-ex/pg-promise 之前,我们需要先安装它。我们可以使用 npm 包管理器来进行安装:
npm install @monaco-ex/pg-promise
或者,我们可以直接在项目中添加以下行来在 package.json
文件中添加依赖:
"@monaco-ex/pg-promise": "^10.9.2",
安装完成后,我们需要在代码中导入使用它的模块:
const pgp = require('@monaco-ex/pg-promise')({});
连接数据库
接下来,我们需要连接 PostgreSQL 数据库。在使用 @monaco-ex/pg-promise 时,我们需要提供数据库的配置信息以便连接。
const config = { host: 'localhost', port: 5432, database: 'example_db', user: 'db_user', password: 'db_pass', };
我们需要传递这个 config
对象到 pgp
(即 @monaco-ex/pg-promise 的实例)构造函数中来创建一个数据库连接:
const db = pgp(config);
执行查询
我们连接到了数据库,现在可以通过 @monaco-ex/pg-promise 执行查询。我们使用 db.query
方法来执行查询。该方法返回一个 Promise,它的结果将被解析为一个结果集。例如:
// 执行查询并打印结果 db.query('SELECT * FROM example_table') .then(result => { console.log(result); }) .catch(error => { console.log(error); });
在这个例子中,我们查询了一个表,并将结果打印到控制台。如果出现错误,我们会将错误信息打印到控制台。
我们还可以使用命名查询参数和字符串形式的查询:
-- -------------------- ---- ------- -- ------ ---------------- - ---- ------------- ----- -- - ---- -- ------------ -- - -------------------- -- ------------ -- - ------------------- --- -- --------- ---------------- - ---- ------------- ----- ---- - ---- --------- ------------ -- - -------------------- -- ------------ -- - ------------------- ---
在这两个例子中,我们使用 $1
来表示查询参数。在第一个例子中,我们使用了一个数字(即 1
),在第二个例子中,我们使用了一个字符串数组(即 ['John']
)来表示参数。请注意,这些参数将被自动地转义以避免 SQL 注入攻击。
事务处理
@monaco-ex/pg-promise 也提供了事务处理。我们可以使用 db.tx
方法来创建事务。事务是一个用于执行多个数据库操作的单个操作单元,如果其中一个操作失败,整个事务将自动回滚。
-- -------------------- ---- ------- ------- -- - ----- -------- - -------------- ---- --------- ---------- --- ----- --- -- ---- ----- ------ - -------------- --------- --- -------- - -------- - - ----- -- - ---- --- ------ ------------------ --------- -- -------- -- - ------------------------ -- ------------ -- - ------------------- ---
在这个例子中,我们将两个操作添加到事务中:向购买表中插入一个新记录,以及将库存中的数量减 1。
结论
到这里,我们已经学习了如何使用 @monaco-ex/pg-promise 来连接和操作 PostgreSQL 数据库。我们学习了如何查询数据、处理事务,以及如何防止 SQL 注入攻击。
我们强烈建议读者自己动手实践本文中的例子,并在实践过程中深入思考和扩展。祝愿你在前端开发中取得更多的进步!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005606c81e8991b448de905